Spec-Zone.ru › scikit-learn

Обучение словарям

классsklearn.decomposition.DictionaryLearning(n_components=None, *, alpha=1, max_iter=1000, tol=1e-08, fit_algorithm='lars', transform_algorithm='omp', transform_n_nonzero_coefs=None, transform_alpha=None, n_jobs=None, code_init=None, dict_init=None, callback=None, verbose=False, split_sign=False, random_state=None, positive_code=False, positive_dict=False, transform_max_iter=1000)[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, по умолчанию=None

Количество элементов словаря для извлечения. Если None, то n_components устанавливается в n_features.

alphafloat, по умолчанию=1.0

Параметр, контролирующий разреженность.

max_iterint, по умолчанию=1000

Максимальное количество итераций.

tolfloat, по умолчанию=1e-8

Допуск для численной погрешности.

fit_algorithm{‘lars’, ‘cd’}, по умолчанию=’lars’
  • 'lars': использует метод наименьших углов для решения задачи лассо (lars_path);
  • 'cd': использует метод координатного спуска для вычисления решения лассо (Lasso). Lars будет быстрее, если оцениваемые компоненты разреженные.

Добавлен в версии 0.17: метод координатного спуска cd для повышения скорости.

transform_algorithm{‘lasso_lars’, ‘lasso_cd’, ‘lars’, ‘omp’, ‘threshold’}, по умолчанию=’omp’

Алгоритм, используемый для преобразования данных:

  • 'lars': использует метод наименьших углов (lars_path);
  • 'lasso_lars': использует Lars для вычисления решения лассо.
  • 'lasso_cd': использует метод координатного спуска для вычисления решения лассо (Lasso). 'lasso_lars' будет быстрее, если оцениваемые компоненты разреженные.
  • 'omp': использует ортогональное преследование соответствия для оценки разреженного решения.
  • 'threshold': обнуляет все коэффициенты, меньшие alpha, из проекции dictionary * X'.

Добавлен в версии 0.17: метод координатного спуска lasso_cd для повышения скорости.

transform_n_nonzero_coefsint, по умолчанию=None

Количество ненулевых коэффициентов, которые необходимо получить в каждом столбце решения. Это используется только algorithm='lars' и algorithm='omp'. Если None, тогда transform_n_nonzero_coefs=int(n_features / 10).

transform_alphafloat, по умолчанию=None

Если algorithm='lasso_lars' или algorithm='lasso_cd', alpha является штрафом, примененным к норме L1. Если algorithm='threshold', alpha — абсолютное значение порога, ниже которого коэффициенты будут обнулены. Если None, по умолчанию alpha.

Изменено в версии 1.2: Когда None, значение по умолчанию изменилось с 1.0 на alpha.

n_jobsint или None, по умолчанию=None

Количество параллельных задач. None означает 1, если не в контексте joblib.parallel_backend. -1 означает использование всех процессоров. Подробнее см. в Справочнике.

code_initndarray формы (n_samples, n_components), по умолчанию=None

Начальное значение для кода для повторного запуска. Используется только если code_init и dict_init не равны None.

dict_initndarray формы (n_components, n_features), по умолчанию=None

Начальные значения для словаря для повторного запуска. Используется только если code_init и dict_init не равны None.

callbackвызываемый объект, по умолчанию=None

Вызываемый объект, который вызывается каждые пять итераций.

Добавлен в версии 1.3.

verbosebool, по умолчанию=False

Для управления уровнем подробности процедуры.

split_signbool, по умолчанию=False

Разделить ли разреженный вектор признаков на конкатенацию его отрицательной части и положительной части. Это может улучшить производительность последующих классификаторов.

random_stateint, экземпляр RandomState или None, по умолчанию=None

Используется для инициализации словаря, когда dict_init не указано, случайного перемешивания данных, когда shuffle установлено в True, и обновления словаря. Передайте целое число для воспроизводимых результатов при многократном вызове функции. См. Справочник.

positive_codebool, по умолчанию=False

Принудительное соблюдение положительности при нахождении кода.

Добавлен в версии 0.20.

positive_dictbool, по умолчанию=False

Принудительное соблюдение положительности при поиске словаря.

Добавлен в версии 0.20.

transform_max_iterint, по умолчанию=1000

Максимальное количество итераций, выполняемых при algorithm='lasso_cd' или 'lasso_lars'.

Добавлен в версии 0.22.

Атрибуты:
components_ndarray формы (n_components, n_features)

Атомы словаря, извлеченные из данных

error_массив

вектор ошибок на каждой итерации

n_features_in_int

Количество признаков, увиденных во время подгонки.

Добавлен в версии 0.24.

feature_names_in_ndarray формы (n_features_in_,)

Имена признаков, увиденные во время подгонки. Определены только тогда, когда X имеет имена признаков, которые все строки.

Добавлен в версии 1.0.

n_iter_int

Количество выполненных итераций.

См. также

MiniBatchDictionaryLearning

Более быстрая, но менее точная версия алгоритма обучения словарю.

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 DictionaryLearning
>>> 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 = DictionaryLearning(
...     n_components=15, transform_algorithm='lasso_lars', transform_alpha=0.1,
...     random_state=42,
... )
>>> X_transformed = dict_learner.fit(X).transform(X)

Мы можем проверить уровень разреженности X_transformed:

>>> np.mean(X_transformed == 0)
np.float64(0.52...)

Мы можем сравнить среднеквадратичную евклидову норму ошибки восстановления разреженно закодированного сигнала относительно среднеквадратичной евклидовой нормы исходного сигнала:

>>> 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.05...)
fit(X, y=None)[source]

Обучить модель на данных в X.

Параметры:
Xarray-like of shape (n_samples, n_features)

Вектор обучения, где n_samples — количество образцов, а n_features — количество признаков.

yИгнорируется

Не используется, присутствует для согласованности API по соглашению.

Возвращает:
selfobject

Возвращает сам экземпляр.

fit_transform(X, y=None)[source]

Обучить модель на данных в X и вернуть преобразованные данные.

Параметры:
Xarray-like of shape (n_samples, n_features)

Вектор обучения, где n_samples — количество образцов, а n_features — количество признаков.

yИгнорируется

Не используется, присутствует для согласованности API по соглашению.

Возвращает:
Vndarray of shape (n_samples, n_components)

Преобразованные данные.

get_feature_names_out(input_features=None)[source]

Получить имена выходных признаков для преобразования.

Имена выходных признаков будут начинаться с имени класса в нижнем регистре. Например, если преобразователь выводит 3 признака, то имена выходных признаков следующие: ["class_name0", "class_name1", "class_name2"].

Параметры:
input_featuresarray-like of str or None, default=None

Используется только для проверки имен признаков с именами, увиденными в fit.

Возвращает:
feature_names_outndarray of str objects

Имена преобразованных признаков.

get_metadata_routing()[source]

Получить маршрутизацию метаданных этого объекта.

Пожалуйста, обратитесь к Руководству пользователя для информации о том, как работает механизм маршрутизации.

Возвращает:
routingMetadataRequest

MetadataRequest encapsulating routing information.

get_params(deep=True)[source]

Получить параметры этого оценщика.

Параметры:
deepbool, default=True

Если True, вернёт параметры этого оценщика и вложенных подобъектов, являющихся оценщиками.

Возвращает:
paramsdict

Имена параметров, сопоставленные со значениями.

set_output(*, transform=None)[source]

Установить контейнер вывода.

См. Введение в API set_output для примера использования API.

Параметры:
transform{“default”, “pandas”, “polars”}, default=None

Настроить вывод transform и fit_transform.

  • "default": Формат вывода по умолчанию преобразователя
  • "pandas": Вывод DataFrame
  • "polars": Вывод Polars
  • None: Конфигурация преобразования не изменена

Added in version 1.4: "polars" option was added.

Возвращает:
selfestimator instance

Экземпляр оценщика.

set_params(**params)[source]

Установить параметры этого оценщика.

Метод работает как с простыми оценщиками, так и с вложенными объектами (такими как Pipeline). У последних есть параметры вида <component>__<parameter>, чтобы можно было обновить каждый компонент вложенного объекта.

Параметры:
**paramsdict

Параметры оценщика.

Возвращает:
selfestimator instance

Экземпляр оценщика.

transform(X)[source]

Кодировать данные как разреженную комбинацию атомов словаря.

Метод кодирования определяется параметром объекта transform_algorithm.

Параметры:
Xndarray of shape (n_samples, n_features)

Данные для тестирования, которые необходимо преобразовать, количество признаков должно быть таким же, как и в данных, использованных для обучения модели.

Возвращает:
X_newndarray of shape (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.DictionaryLearning.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API