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
-
MetadataRequestencapsulating 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)
-
Преобразованные данные.
Примеры галереи
© 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