Обучение словаря с мини-пачками
- классsklearn.decomposition.MiniBatchDictionaryLearning(n_components=None, *, alpha=1, max_iter=1000, fit_algorithm='lars', n_jobs=None, batch_size=256, shuffle=True, dict_init=None, transform_algorithm='omp', transform_n_nonzero_coefs=None, transform_alpha=None, verbose=False, split_sign=False, random_state=None, positive_code=False, positive_dict=False, transform_max_iter=1000, callback=None, tol=0.001, max_no_improvement=10)[source]
-
Обучение словарю мини-пакетами.
Находит словарь (набор атомов), который хорошо работает при разреженном кодировании подогнанных данных.
Решает задачу оптимизации:
(U^*,V^*) = argmin 0.5 || X - U V ||_Fro^2 + alpha * || U ||_1,1 (U,V) with || V_k ||_2 <= 1 for all 0 <= k < n_components||.||_Fro обозначает норму Фробениуса, а ||.||_1,1 обозначает норму матрицы по элементам, которая представляет собой сумму абсолютных значений всех элементов матрицы.
Подробнее см. в Руководстве пользователя.
- Параметры:
-
- n_componentsint, default=None
-
Количество элементов словаря для извлечения.
- alphafloat, default=1
-
Параметр, контролирующий разреженность.
- max_iterint, default=1_000
-
Максимальное количество итераций по всему набору данных до остановки независимо от каких-либо эвристик по ранней остановке.
Добавлена в версии 1.1.
- fit_algorithm{‘lars’, ‘cd’}, default=’lars’
-
Используемый алгоритм:
-
'lars': использует метод наименьших углов для решения задачи лассо (linear_model.lars_path) -
'cd': использует метод координатного спуска для вычисления решения Лассо (linear_model.Lasso). Lars будет быстрее, если оцененные компоненты являются разреженными.
-
- n_jobsint, default=None
-
Количество параллельных задач для выполнения.
Noneозначает 1, если не в контекстеjoblib.parallel_backend.-1означает использование всех процессоров. Дополнительные сведения см. в Справочнике. - batch_sizeint, default=256
-
Количество образцов в каждом мини-пакете.
Изменено в версии 1.3: Значение по умолчанию для
batch_sizeбыло изменено с 3 на 256 в версии 1.3. - shufflebool, default=True
-
Перемешивать ли образцы перед формированием пакетов.
- dict_initndarray of shape (n_components, n_features), default=None
-
Начальное значение словаря для сценариев теплого запуска.
- transform_algorithm{‘lasso_lars’, ‘lasso_cd’, ‘lars’, ‘omp’, ‘threshold’}, default=’omp’
-
Алгоритм, используемый для преобразования данных:
-
'lars': использует метод наименьших углов (linear_model.lars_path); -
'lasso_lars': использует Lars для вычисления решения Лассо. -
'lasso_cd': использует метод координатного спуска для вычисления решения Лассо (linear_model.Lasso).'lasso_lars'будет быстрее, если оцененные компоненты являются разреженными. -
'omp': использует ортогональное преследование совпадений для оценки разреженного решения. -
'threshold': обнуляет все коэффициенты, меньшие alpha, из проекцииdictionary * X'.
-
- transform_n_nonzero_coefsint, default=None
-
Количество ненулевых коэффициентов, на которые нужно ориентироваться в каждом столбце решения. Это используется только
algorithm='lars'иalgorithm='omp'. ЕслиNone, тоtransform_n_nonzero_coefs=int(n_features / 10). - transform_alphafloat, default=None
-
Если
algorithm='lasso_lars'илиalgorithm='lasso_cd',alphaявляется штрафом, применяемым к норме L1. Еслиalgorithm='threshold',alphaявляется абсолютным значением порога, ниже которого коэффициенты будут обнулены. ЕслиNone, по умолчаниюalpha.Изменено в версии 1.2: Когда None, значение по умолчанию было изменено с 1.0 на
alpha. - verbosebool or int, default=False
-
Для управления подробностью процедуры.
- split_signbool, default=False
-
Разделить ли разреженный вектор признаков на конкатенацию его отрицательной части и его положительной части. Это может улучшить производительность классификаторов на последующих этапах.
- random_stateint, RandomState instance or None, default=None
-
Используется для инициализации словаря, когда
dict_initне указано, случайного перемешивания данных, когдаshuffleустановлено вTrue, и обновления словаря. Передайте целое число для воспроизводимых результатов в нескольких вызовах функций. См. Справочник. - positive_codebool, default=False
-
Требовать ли положительность при поиске кода.
Добавлена в версии 0.20.
- positive_dictbool, default=False
-
Требовать ли положительность при поиске словаря.
Добавлена в версии 0.20.
- transform_max_iterint, default=1000
-
Максимальное количество итераций для выполнения, если
algorithm='lasso_cd'или'lasso_lars'.Добавлена в версии 0.22.
- callbackcallable, default=None
-
Вызываемая функция, которая вызывается в конце каждой итерации.
Добавлена в версии 1.1.
- tolfloat, default=1e-3
-
Управление ранней остановкой на основе нормы различий в словаре между двумя шагами.
Чтобы отключить раннюю остановку на основе изменений в словаре, установите
tolв 0.0.Добавлена в версии 1.1.
- max_no_improvementint, default=10
-
Управление ранней остановкой на основе последовательного количества мини-пакетов, которые не дают улучшения в сглаженной функции стоимости.
Чтобы отключить обнаружение сходимости на основе функции стоимости, установите
max_no_improvementв None.Добавлена в версии 1.1.
- Атрибуты:
-
- components_ndarray of shape (n_components, n_features)
-
Извлеченные компоненты из данных.
- n_features_in_int
-
Количество признаков, увиденных во время fit.
Добавлена в версии 0.24.
-
feature_names_in_ndarray of shape (
n_features_in_,) -
Имена признаков, увиденных во время fit. Определены только тогда, когда у
Xесть имена признаков, которые все являются строками.Добавлена в версии 1.0.
- n_iter_int
-
Количество итераций по всему набору данных.
- n_steps_int
-
Количество обработанных мини-пакетов.
Добавлена в версии 1.1.
См. также
DictionaryLearning-
Найти словарь, который разреженно кодирует данные.
MiniBatchSparsePCA-
Анализ главных компонент мини-пакетами с разреженностью.
SparseCoder-
Найти разреженное представление данных из фиксированного, предварительно вычисленного словаря.
SparsePCA-
Анализ главных компонент с разреженностью.
Ссылки
J. Mairal, F. Bach, J. Ponce, G. Sapiro, 2009: Обучение словаря онлайн для разреженного кодирования (https://www.di.ens.fr/~fbach/mairal_icml09.pdf)
Примеры
>>> import numpy as np >>> from sklearn.datasets import make_sparse_coded_signal >>> from sklearn.decomposition import MiniBatchDictionaryLearning >>> X, dictionary, code = make_sparse_coded_signal( ... n_samples=30, n_components=15, n_features=20, n_nonzero_coefs=10, ... random_state=42) >>> dict_learner = MiniBatchDictionaryLearning( ... n_components=15, batch_size=3, transform_algorithm='lasso_lars', ... transform_alpha=0.1, max_iter=20, random_state=42) >>> X_transformed = dict_learner.fit_transform(X)
Мы можем проверить уровень разреженности
X_transformed:>>> np.mean(X_transformed == 0) > 0.5 np.True_
Мы можем сравнить среднее значение квадратной евклидовой нормы ошибки реконструкции разреженно закодированного сигнала относительно квадратной евклидовой нормы исходного сигнала:
>>> X_hat = X_transformed @ dict_learner.components_ >>> np.mean(np.sum((X_hat - X) ** 2, axis=1) / np.sum(X ** 2, axis=1)) np.float64(0.052...)
- fit(X, y=None)[source]
-
Обучить модель на данных в X.
- Параметры:
-
- Xмассив-подобный объекта формы (n_samples, n_features)
-
Вектор обучения, где
n_samples— количество выборок, аn_features— количество признаков. - yИгнорируется
-
Не используется, присутствует для соответствия API по соглашению.
- Возвращаемое значение:
-
- selfобъект
-
Возвращает сам экземпляр.
- fit_transform(X, y=None, **fit_params)[source]
-
Обучить модель на данных, затем преобразовать их.
Обучает преобразователь на
Xиyс необязательными параметрамиfit_paramsи возвращает преобразованную версиюX.- Параметры:
-
- Xмассив-подобный объект формы (n_samples, n_features)
-
Входные данные.
- yмассив-подобный объект формы (n_samples,) или (n_samples, n_outputs), по умолчанию None
-
Значения целевой переменной (None для безконтрольных преобразований).
- **fit_paramsdict
-
Дополнительные параметры обучения.
- Возвращаемое значение:
-
- X_newмассив ndarray формы (n_samples, n_features_new)
-
Преобразованный массив.
- get_feature_names_out(input_features=None)[source]
-
Получить имена выходных признаков для преобразования.
Имена выходных признаков будут иметь префикс с именем класса в нижнем регистре. Например, если преобразователь выводит 3 признака, тогда имена выходных признаков:
["class_name0", "class_name1", "class_name2"].- Параметры:
-
- input_featuresмассив-подобный объект str или None, по умолчанию None
-
Используется только для проверки имен признаков с именами, встречающимися в
fit.
- Возвращаемое значение:
-
- feature_names_outмассив ndarray из str объектов
-
Имена преобразованных признаков.
- get_metadata_routing()[source]
-
Получить маршрутизацию метаданных этого объекта.
Пожалуйста, обратитесь к Руководству пользователя для получения информации о том, как работает механизм маршрутизации.
- Возвращаемое значение:
-
- routingMetadataRequest
-
MetadataRequest, содержащий информацию о маршрутизации.
- get_params(deep=True)[source]
-
Получить параметры этого оцениваемого объекта.
- Параметры:
-
- deepbool, по умолчанию True
-
Если True, вернет параметры этого объекта оценки и вложенных подобъектов, которые являются объектами оценки.
- Возвращаемое значение:
-
- paramsdict
-
Имена параметров, сопоставленные с их значениями.
- partial_fit(X, y=None)[source]
-
Обновить модель, используя данные в X как мини-пакет.
- Параметры:
-
- Xмассив-подобный объект формы (n_samples, n_features)
-
Вектор обучения, где
n_samples— количество выборок, аn_features— количество признаков. - yИгнорируется
-
Не используется, присутствует для соответствия API по соглашению.
- Возвращаемое значение:
-
- selfобъект
-
Возвращает сам экземпляр.
- set_output(*, transform=None)[source]
-
Установить контейнер вывода.
См. Введение в API set_output для примера использования API.
- Параметры:
-
- transform{“default”, “pandas”, “polars”}, по умолчанию None
-
Настроить вывод
transformиfit_transform.-
"default": Формат вывода преобразователя по умолчанию -
"pandas": Вывод DataFrame -
"polars": Вывод Polars -
None: Конфигурация преобразования не изменяется
Добавлен в версии 1.4: Добавлен параметр
"polars". -
- Возвращаемое значение:
-
- selfэкземпляр объекта оценки
-
Экземпляр объекта оценки.
- set_params(**params)[source]
-
Установите параметры этого оценщика.
Метод работает как с простыми оценщиками, так и со вложенными объектами (такими как
Pipeline). Последние имеют параметры вида<component>__<parameter>, чтобы можно было обновить каждый компонент вложенного объекта.- Параметры:
-
- **paramsdict
-
Параметры оценщика.
- Возвращает:
-
- selfэкземпляр оценщика
-
Экземпляр оценщика.
- transform(X)[source]
-
Кодирует данные как линейную комбинацию атомов словаря.
Метод кодирования определяется параметром объекта
transform_algorithm.- Параметры:
-
- Xмассив NumPy формы (n_samples, n_features)
-
Данные для преобразования, должны иметь такое же количество признаков, как данные, используемые для обучения модели.
- Возвращает:
-
- X_newмассив NumPy формы (n_samples, n_components)
-
Преобразованные данные.
Примеры из галереи
© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.decomposition.MiniBatchDictionaryLearning.html