Spec-Zone.ru › scikit-learn

NMF

классsklearn.decomposition.NMF(n_components='auto', *, init=None, solver='cd', beta_loss='frobenius', tol=0.0001, max_iter=200, random_state=None, alpha_W=0.0, alpha_H='same', l1_ratio=0.0, verbose=0, shuffle=False)[source]

Неотрицательная матричная факторизация (NMF).

Найдите две неотрицательные матрицы, т.е. матрицы со всеми неотрицательными элементами, (W, H), произведение которых приближает неотрицательную матрицу X. Эта факторизация может быть использована, например, для уменьшения размерности, разделения источников или извлечения тем.

Функция объектива:

\[ \begin{align}\begin{aligned}L(W, H) &= 0.5 * ||X - WH||_{loss}^2\\ &+ alpha\_W * l1\_ratio * n\_features * ||vec(W)||_1\\ &+ alpha\_H * l1\_ratio * n\_samples * ||vec(H)||_1\\ &+ 0.5 * alpha\_W * (1 - l1\_ratio) * n\_features * ||W||_{Fro}^2\\ &+ 0.5 * alpha\_H * (1 - l1\_ratio) * n\_samples * ||H||_{Fro}^2,\end{aligned}\end{align} \]

где \(||A||_{Fro}^2 = \sum_{i,j} A_{ij}^2\) (норма Фробениуса) и \(||vec(A)||_1 = \sum_{i,j} abs(A_{ij})\) (элементная L1-норма).

Общая норма \(||X - WH||_{loss}\) может представлять собой норму Фробениуса или другую поддерживаемую потерю бета-расхождения. Выбор между вариантами контролируется параметром beta_loss.

Члены регуляризации масштабируются на n_features для W и на n_samples для H, чтобы сохранить их влияние сбалансированным по отношению друг к другу и к члену подгонки данных, насколько это возможно, независимо от размера n_samples обучающего набора.

Функция объектива минимизируется с помощью поочередной минимизации W и H.

Обратите внимание, что преобразованные данные называются W, а матрица компонентов — H. В литературе по NMF обычно используется обратная система имен, так как матрица данных X транспонирована.

Дополнительную информацию см. в Руководстве пользователя.

Параметры:
n_componentsint или {‘auto’} или None, по умолчанию = ‘auto’

Количество компонентов. Если None, все признаки сохраняются. Если n_components='auto', количество компонентов автоматически определяется по форме W или H.

Изменено в версии 1.4: Добавлен параметр 'auto'.

Изменено в версии 1.6: Значение по умолчанию изменено с None на 'auto'.

init{‘random’, ‘nndsvd’, ‘nndsvda’, ‘nndsvdar’, ‘custom’}, по умолчанию = None

Метод, используемый для инициализации процесса. Допустимые варианты:

  • None: ‘nndsvda’, если n_components <= min(n_samples, n_features), в противном случае случайный.
  • 'random': неотрицательные случайные матрицы, масштабированные с помощью: sqrt(X.mean() / n_components)
  • 'nndsvd': Инициализация с помощью неотрицательного разложения сингулярных значений (NNDSVD) (лучше для разреженности)
  • 'nndsvda': NNDSVD с нулями, заполненными средним значением X (лучше, когда разреженность не требуется)
  • 'nndsvdar': NNDSVD с нулями, заполненными небольшими случайными значениями (как правило, быстрее, менее точная альтернатива NNDSVDa для случаев, когда разреженность не требуется)
  • 'custom': Использовать пользовательские матрицы W и H, которые должны быть обе предоставлены.

Изменено в версии 1.1: Когда init=None и n_components меньше n_samples и n_features, по умолчанию используется nndsvda, а не nndsvd.

solver{‘cd’, ‘mu’}, по умолчанию =’cd’

Числовой решатель для использования:

  • ‘cd’ — решатель с методом координатного спуска.
  • ‘mu’ — решатель с методом мультипликативных обновлений.

Добавлен в версии 0.17: Решатель координатного спуска.

Добавлен в версии 0.19: Решатель с методом мультипликативных обновлений.

beta_lossfloat или {‘frobenius’, ‘kullback-leibler’, ‘itakura-saito’}, по умолчанию =’frobenius’

Бета-расхождение, которое требуется минимизировать, измеряя расстояние между X и точечным произведением WH. Обратите внимание, что значения, отличные от ‘frobenius’ (или 2) и ‘kullback-leibler’ (или 1), приводят к значительно более медленным вычислениям. Обратите внимание, что для beta_loss <= 0 (или ‘itakura-saito’) входная матрица X не может содержать нулей. Используется только в решателе ‘mu’.

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

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

Допуск условия остановки.

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

Максимальное количество итераций до завершения по таймауту.

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

Используется для инициализации (когда init == ‘nndsvdar’ или ‘random’), а также в методе координатного спуска. Передайте целое число для воспроизводимых результатов в разных вызовах функций. См. Глоссарий.

alpha_Wfloat, по умолчанию = 0.0

Постоянная, которая умножает члены регуляризации W. Установите в ноль (по умолчанию), чтобы не использовать регуляризацию для W.

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

alpha_Hfloat или “same”, по умолчанию = “same”

Постоянная, которая умножает члены регуляризации H. Установите в ноль, чтобы не использовать регуляризацию для H. Если “same” (по умолчанию), принимает то же значение, что и alpha_W.

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

l1_ratiofloat, по умолчанию = 0.0

Параметр смешивания регуляризации, 0 ≤ l1_ratio ≤ 1. Для l1_ratio = 0 штраф представляет собой элементную L2-штраф (также норма Фробениуса). Для l1_ratio = 1 это элементный L1-штраф. Для 0 < l1_ratio < 1 штраф является комбинацией L1 и L2.

Добавлен в версии 0.17: Параметр регуляризации l1_ratio используется в решателе координатного спуска.

verboseint, по умолчанию = 0

Выводить информацию или нет.

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

Если True, случайным образом меняет порядок координат в решателе координатного спуска.

Добавлен в версии 0.17: Параметр shuffle используется в решателе координатного спуска.

Атрибуты:
components_Массив формы (n_components, n_features)

Матрица факторизации, иногда называемая «словарём».

n_components_int

Количество компонентов. Оно совпадает с параметром n_components , если он был задан. В противном случае оно будет равно количеству признаков.

reconstruction_err_float

Норма Фробениуса разницы матриц или бета-расхождение между обучающими данными X и реконструированными данными WH из обученной модели.

n_iter_int

Фактическое количество итераций.

n_features_in_int

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

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

feature_names_in_Массив формы (n_features_in_,)

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

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

См. также

DictionaryLearning

Найти словарь, который разреженно кодирует данные.

MiniBatchSparsePCA

Минимальная разреженная главная компонента анализа.

PCA

Главной компонентный анализ.

SparseCoder

Найти разреженное представление данных из фиксированного, предварительно вычисленного словаря.

SparsePCA

Разложение главных компонент с разреженностью.

TruncatedSVD

Снижение размерности с использованием усеченного SVD.

Ссылки

[1]

“Быстрые локальные алгоритмы для неотрицательных матричных и тензорных факторизаций большого масштаба” Цихоцкий, Анджей и П. Х. А. Н. Ан-Хуй. IEICE transactions on fundamentals of electronics, communications and computer sciences 92.3: 708-721, 2009.

[2]

“Алгоритмы неотрицательной матричной факторизации с бета-расхождением” Февот, К., & Идьер, Ж. (2011). Neural Computation, 23(9).

Примеры

>>> import numpy as np
>>> X = np.array([[1, 1], [2, 1], [3, 1.2], [4, 1], [5, 0.8], [6, 1]])
>>> from sklearn.decomposition import NMF
>>> model = NMF(n_components=2, init='random', random_state=0)
>>> W = model.fit_transform(X)
>>> H = model.components_
fit(X, y=None, **params)[source]

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

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

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

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

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

**paramskwargs

Параметры (именованные аргументы) и значения, передаваемые экземпляру fit_transform.

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

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

fit_transform(X, y=None, W=None, H=None)[source]

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

Это более эффективно, чем вызов fit, за которым следует transform.

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

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

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

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

Warray-like of shape (n_samples, n_components), default=None

Если init='custom', он используется в качестве начального приближения решения. Если None, используется метод инициализации, указанный в init.

Harray-like of shape (n_components, n_features), default=None

Если init='custom', он используется в качестве начального приближения решения. Если None, используется метод инициализации, указанный в init.

Возвращает:
Wndarray 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

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

inverse_transform(X=None, *, Xt=None)[source]

Преобразовать данные обратно в исходное пространство.

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

Параметры:
X{ndarray, sparse matrix} of shape (n_samples, n_components)

Матрица преобразованных данных.

Xt{ndarray, sparse matrix} of shape (n_samples, n_components)

Матрица преобразованных данных.

Устарело начиная с версии 1.5: Xt устарело в версии 1.5 и будет удалено в версии 1.7. Используйте X вместо этого.

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

Возвращает матрицу данных исходной формы.

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]

Преобразовать данные X в соответствии с обученной моделью NMF.

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

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

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

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

Примеры галереи

Декомпозиция набора данных "лица"

Извлечение тем с помощью неотрицательной матричной факторизации и распределения Дирихле по скрытым темам

Выбор уменьшения размерности с помощью Pipeline и GridSearchCV

© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.decomposition.NMF.html

Spec-Zone.ru

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