Spec-Zone.ru › scikit-learn
MiniBatchNMF класс sklearn.decomposition. MiniBatchNMF ( n_components = 'auto' , * , init = None , batch_size = 1024 , beta_loss = 'frobenius' , tol = 0.0001 , max_no_improvement = 10 , max_iter = 200 , alpha_W = 0.0 , alpha_H = 'same' , l1_ratio = 0.0 , forget_factor = 0.7 , fresh_restarts = False , fresh_restarts_max_iter = 30 , transform_max_iter = None , random_state = None , verbose = 0 ) [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}^2\) может представлять собой норму Фробениуса или другую поддерживаемую функцию потерь бета-расхождения. Выбор между вариантами контролируется параметром beta_loss.
Функция цели минимизируется с помощью попеременной минимизации W и H.
Обратите внимание, что преобразованные данные называются W, а матрица компонент — H. В литературе по NMF обычно используется обратная система обозначений, так как матрица данных X транспонируется.
Подробнее см. в Руководстве пользователя .
Параметры:
n_components int или {‘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, которые должны быть предоставлены.
batch_size int, по умолчанию=1024
Число образцов в каждой мини-пачке. Большие размеры пачек обеспечивают лучшую долгосрочную сходимость за счет медленного старта.
beta_loss float или {‘frobenius’, ‘kullback-leibler’, ‘itakura-saito’}, по умолчанию=’frobenius’
Бета-расхождение, которое нужно минимизировать, измеряющее расстояние между X и точечным произведением WH. Обратите внимание, что значения, отличные от ‘frobenius’ (или 2) и ‘kullback-leibler’ (или 1), приводят к значительно более медленной сходимости. Обратите внимание, что для beta_loss <= 0 (или ‘itakura-saito’) матрица входных данных X не может содержать нули.
tol float, по умолчанию=1e-4
Управление ранней остановкой на основе нормы различий в H между 2 шагами. Для отключения ранней остановки на основе изменений в H, установите tol в 0.0.
max_no_improvement int, по умолчанию=10
Управление ранней остановкой на основе последовательного числа мини-пачек, которые не приводят к улучшению сглаженной функции стоимости. Чтобы отключить обнаружение сходимости на основе функции стоимости, установите max_no_improvement в None.
max_iter int, по умолчанию=200
Максимальное число итераций по всему набору данных перед истечением времени.
alpha_W float, по умолчанию=0.0
Константа, которая умножает члены регуляризации W. Установите её в ноль (по умолчанию), чтобы не было регуляризации W.
alpha_H float или “same”, по умолчанию=”same”
Константа, которая умножает члены регуляризации H. Установите её в ноль, чтобы не было регуляризации H. Если “same” (по умолчанию), принимает то же значение, что и alpha_W.
l1_ratio float, по умолчанию=0.0
Параметр смешивания регуляризации, с 0 <= l1_ratio <= 1. Для l1_ratio = 0 штраф представляет собой элементную L2-штраф (также норма Фробениуса). Для l1_ratio = 1 это элементный L1-штраф. Для 0 < l1_ratio < 1 штраф представляет собой комбинацию L1 и L2.
forget_factor float, по умолчанию=0.7
Степень перемасштабирования прошлых сведений. Его значение может быть 1 с конечными наборами данных. Рекомендуется использовать значения < 1 при онлайн-обучении, так как более новые пакеты будут иметь больший вес, чем прошлые пакеты.
fresh_restarts bool, по умолчанию=False
Следует ли полностью решать W на каждом шаге. Выполнение свежих перезапусков, вероятно, приведёт к лучшему решению за то же число итераций, но это намного медленнее.
fresh_restarts_max_iter int, по умолчанию=30
Максимальное число итераций при решении W на каждом шаге. Используется только при выполнении свежих перезапусков. Эти итерации могут быть остановлены раньше на основе малого изменения W, контролируемого tol.
transform_max_iter int, по умолчанию=None
Максимальное число итераций при решении W на этапе преобразования. Если None, по умолчанию max_iter.
random_state int, экземпляр RandomState или None, по умолчанию=None
Используется для инициализации (когда init == ‘nndsvdar’ или ‘random’) и в методе координатного спуска. Передайте целое число для воспроизводимых результатов при нескольких вызовах функции. См. Словарь .
verbose bool, по умолчанию=False
Выводить ли подробную информацию.
Атрибуты:
components_ массив формы (n_components, n_features)
Матрица факторизации, иногда называемая «словарём».
n_components_ int
Число компонент. Оно равно параметру n_components если он был задан. В противном случае он будет равен количеству признаков.
reconstruction_err_ float
Норма Фробениуса разницы матриц или бета-расхождения между обучающими данными X и реконструированными данными WH из обученной модели.
n_iter_ int
Фактическое количество начатых итераций по всему набору данных.
n_steps_ int
Количество обработанных мини-пачек.
n_features_in_ int
Количество признаков, увиденных во время fit .
feature_names_in_ массив формы (n_features_in_,)
Имена признаков, увиденных во время fit . Определены только тогда, когда X имеет имена признаков, которые все являются строками.
См. также
NMF
Неотрицательная матричная факторизация.
MiniBatchDictionaryLearning
Находит словарь, который лучше всего может быть использован для представления данных с использованием разреженного кода.
Ссылки Примеры >>> 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 MiniBatchNMF
>>> model = MiniBatchNMF(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 по соглашению.
**params kwargs
Параметры (именованные аргументы) и значения, передаваемые экземпляру fit_transform.
Возвращаемое значение:
self object
Возвращает сам экземпляр.
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)
Матрица данных, подлежащая разложению.
y Игнорируется
Не используется, присутствует здесь для согласованности API по соглашению.
W array-like of shape (n_samples, n_components), default=None
Если init='custom', используется в качестве начального приближения решения. Если None, используется метод инициализации, указанный в init.
H array-like of shape (n_components, n_features), default=None
Если init='custom', используется в качестве начального приближения решения. Если None, используется метод инициализации, указанный в init.
Возвращаемое значение:
W ndarray of shape (n_samples, n_components)
Преобразованные данные.
get_feature_names_out ( input_features = None ) [source]
Получение имён выходных признаков для преобразования.
Имена выходных признаков будут иметь префикс с нижним регистром имени класса. Например, если трансформер выводит 3 признака, то имена выходных признаков: ["class_name0", "class_name1", "class_name2"].
Параметры:
input_features array-like of str or None, default=None
Используется только для проверки имён признаков с именами, увиденными в fit.
Возвращаемое значение:
feature_names_out ndarray of str objects
Имена преобразованных признаков.
get_metadata_routing ( ) [source]
Получить маршрутизацию метаданных этого объекта.
Пожалуйста, обратитесь к Руководству пользователя по работе механизма маршрутизации.
Возвращаемое значение:
routing MetadataRequest
MetadataRequest encapsulating routing information.
get_params ( deep = True ) [source]
Получить параметры этого оценщика.
Параметры:
deep bool, default=True
Если True, вернёт параметры этого оценщика и вложенных под-объектов, которые являются оценщиками.
Возвращаемое значение:
params dict
Имена параметров, сопоставленные со значениями.
inverse_transform ( X = None , * , Xt = None ) [source]
Преобразование данных обратно в исходное пространство.
Параметры:
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 вместо этого.
Возвращаемое значение:
X ndarray of shape (n_samples, n_features)
Возвращает матрицу данных исходной формы.
partial_fit ( X , y = None , W = None , H = None ) [source]
Обновление модели с использованием данных в X в качестве мини-пакета.
Ожидается, что этот метод будет вызываться несколько раз подряд на разных фрагментах набора данных для реализации обучения вне памяти или онлайн-обучения.
Это особенно полезно, когда весь набор данных слишком большой, чтобы поместиться в оперативной памяти сразу (см. Стратегии масштабирования с вычислительной точки зрения: большие данные ).
Параметры:
X {array-like, sparse matrix} of shape (n_samples, n_features)
Матрица данных, подлежащая разложению.
y Игнорируется
Не используется, присутствует здесь для соответствия API по соглашению.
W array-like of shape (n_samples, n_components), default=None
Если init='custom', используется в качестве начального приближения решения. Используется только для первого вызова partial_fit.
H array-like of shape (n_components, n_features), default=None
Если init='custom', используется в качестве начального приближения решения. Используется только для первого вызова partial_fit.
Возвращаемое значение:
self
Возвращает сам экземпляр.
set_output ( * , transform = None ) [source]
Установить контейнер вывода.
См. Введение в API set_output для примера использования API.
Параметры:
transform {“default”, “pandas”, “polars”}, default=None
Настройка вывода transform и fit_transform.
"default": Формат вывода по умолчанию трансформера
"pandas": Вывод в виде DataFrame
"polars": Вывод в формате Polars
None: Настройка преобразования не изменяется Добавлен в версии 1.4: "polars" вариант был добавлен.
Возвращаемое значение:
self экземпляр оценщика
Экземпляр оценщика.
set_params ( ** params ) [source]
Установить параметры этого оценщика.
Метод работает как с простыми оценщиками, так и с вложенными объектами (такими как Pipeline ). Последние имеют параметры вида <component>__<parameter>, чтобы было возможно обновить каждый компонент вложенного объекта.
Параметры:
**params dict
Параметры оценщика.
Возвращаемое значение:
self экземпляр оценщика
Экземпляр оценщика.
transform ( X ) [source]
Преобразование данных X согласно обученной модели MiniBatchNMF.
Параметры:
X {array-like, sparse matrix} of shape (n_samples, n_features)
Матрица данных, подлежащая преобразованию моделью.
Возвращаемое значение:
W ndarray of shape (n_samples, n_components)
Преобразованные данные.
<img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAEYCAMAAABFglBLAAADAFBMVEVHcEy2traioqKTk5Pr6+tpaWmmpqb///+Kioq+vr7+///5/P39/f7+/v/o6Oju9fr7/f73+Pf3+/3l7/fx9/v29vb1+vzs9Pnm5ubg7PXz+Pyxz+XQ4/Dd6/TU5fHK3+7u7u6Svdr4+fvq8vmKuNiWv9yOu9l9sNTN4e/i7vbn8fe91+nC2ur//fygxuCexN+tzeSawt200ubI3u3W5vJxqdCpy+K61ejE3Ox2rNPY6PL/+/mGttimyeH09PT+uHrFxMSEtdWjyOH/lDX/iB/b6fOBs9XhYWJam8f/oExVVVX/mkD/+PPqj5D43N1qpM3+jSreUVL/8ue92e40n0dioMtbW1tSlsbZ2dnbSEn+5c44pTvV1dRUslT+3cDXLi/aPT777e3+ghVBqURgYGBHj8H64+MvoTKrq6vYNDZkZGRtbW330dGBgYF3wXny8vJycnL+7t+21Oj/pVXk5OWNj5Dx8fH2/v+6u/Jycl3d3eYmZraQ0Tj4uFKrUzNzM3zw8PfWVr/2LXql5j/q2Ggn6DnhIX8vofR0dFBQUF8fHn/sm7c3N398/Lxs7P66OeTz5Se05+xsbAomUA5h73roKHuqapqampiuGHf39/ziClkprP/yZj+zaLxu7y94r2HhYTzzM2r2K4pfbNNTU0qnTLZ7ftKo3acnJvkbGxitXJrvG2GyYbL5dp3sL/i9P3q6utVrGuWxePJMzlCpF2KxKX/1K3UJifCSFG1tLL319d5tq2o0Oqv1MqWlpYslVnMPUOhys9nsovvr3bq9e3/w41YpJozMzPtkT6+3NfR6PZMmK+lpaV2u5D5fQ+/jpxBl5G23rfS69Kh0bHnfX3Zt5Xf8d+dsL8+mnSLoLrldHXtmk+0ws7KfojKpYDhiz2qbX/XZ2uIvN/btbzh7+kuiJaHu8Lu3MvNjlOUxrnfo2rjxaPexczNVFq0Mz/gfCKbuc7K1OBpcCnJp7NAjafw0LPgz76ci6K3tMfRuHCRkEvEmWmwpZWVpajL1NdHcEyfV5o1AAABAHRSTlMA//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AJ5UbsQAAIABJREFUeNrs3G1sE/cdB3C2FX5g5/Bxvt7Nlztnzp2fjZ/t2I5NsB1HeUCKlRGCMM0Lwupq1VIlQClUCRLyxCZX2rRNgoZUqToepJRkMBGkCmWI8jAybQiCBqpSlTcIGH1BX6x9vf/ZgUbtypvGka3+vors89l5EX/yv9//yV61amkAs/JZ9YLgu4MgGARBEAyCIAgGQRAEgyAIgkEQBEEQBMEgCIJgEARBMAiCIBgEQRAEQRAMgiAIBkEQBIMgCIJBEARBEATBIMgPCWTvOsyL89LKgvxk9761mO/Ovs5/rjDIOrzevDBr1qwwyI/wPX9hfowgCIJBEARBEARBkB8QiF1GkGoKZQ4jSHVIMOV7WYcgVRFRYQEYkcUaUiXROznSPKxBBKmq6xavRRDs9iIIglR/6LDxW+fYlL6mQbR7R2iAkZFaBNGwHtu3Tup8hmd/Gl2LINuP/n0E1mzb9usaBJGVzIu4PP5aBGnc1PluY+c7L3WuLz38Wy2BcE3/d8aEcwgeVSpgrM0a0jky0gnU7p0AGzZvfr0mQAKR736u+Q1X29nU3ubmmi3q20bOdtKwezvAm2/vO/FWLYD4vV8fOwJLSwW1pXD/xo2ujo6OQk+NFvX1Jw407v5oc+cbpYdv10IL4TIM9I8v5oDCPSvndnLz6OaVayRHnrT21ybIT4+e2HZg+9HVh2qoqAdDeuhqTY/dSI89vdkiaBZP/7V7PwEZG1IL+qlPsv21esmqvXGIkYCkxzUmP8Sij4vlc4+uFB4/LhQKHVkVBJhH6TIIzSBIxSMYmY3p9zRBdQRYLJTPfb6rUCwSkMK1s0GKPB5aBGky0wiyAiEg5YNiV38phY5yt8qeSljoJSC5CIUglQvF0t8AGX86NvY0S9ICxmFWA/qEo7Q6MpQ+jDVkBcbmbYtLH83ZC+WDl79459CnQ0NDIy4qEk2yUKrwp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
<img alt="" src="data:image/png;base64,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