LatentDirichletAllocation
- classsklearn.decomposition.LatentDirichletAllocation(n_components=10, *, doc_topic_prior=None, topic_word_prior=None, learning_method='batch', learning_decay=0.7, learning_offset=10.0, max_iter=10, batch_size=128, evaluate_every=-1, total_samples=1000000.0, perp_tol=0.1, mean_change_tol=0.001, max_doc_update_iter=100, n_jobs=None, verbose=0, random_state=None)[исходный код]
-
Латентное размещение Дирихле с алгоритмом онлайн-вариационного байесовского вывода.
Реализация основана на [1] и [2].
Добавлено в версии 0.17.
Подробнее см. в руководстве пользователя.
- Параметры:
-
- n_componentsint, default=10
-
Количество тем.
Изменено в версии 0.19:
n_topicsпереименован вn_components - doc_topic_priorfloat, default=None
-
Априорное распределение тем документа
theta. Если значение равно None, используется значение по умолчанию1 / n_components. В статье [1] это называетсяalpha. - topic_word_priorfloat, default=None
-
Априорное распределение слов темы
beta. Если значение равно None, используется значение по умолчанию1 / n_components. В статье [1] это называетсяeta. - learning_method{‘batch’, ‘online’}, default=’batch’
-
Метод обновления
_component. Используется только в методеfit. Как правило, при большом объёме данных онлайн-обновление выполняется значительно быстрее пакетного.Допустимые значения:
- ‘batch’: пакетный метод вариационного байесовского вывода. При каждом обновлении EM используются все обучающие данные. Старые
components_перезаписываются на каждой итерации. - ‘online’: онлайн-метод вариационного байесовского вывода. При каждом обновлении EM для инкрементального обновления переменной
components_используется мини-пакет обучающих данных. Скорость обучения регулируется параметрамиlearning_decayиlearning_offset.
Изменено в версии 0.20: Теперь метод обучения по умолчанию —
"batch". - ‘batch’: пакетный метод вариационного байесовского вывода. При каждом обновлении EM используются все обучающие данные. Старые
- learning_decayfloat, default=0.7
-
Параметр, регулирующий скорость обучения при онлайн-обучении. Для гарантии асимптотической сходимости значение должно находиться в диапазоне (0.5, 1.0]. Если значение равно 0.0, а batch_size равен
n_samples, метод обновления совпадает с пакетным обучением. В литературе этот параметр называется kappa. - learning_offsetfloat, default=10.0
-
Положительный параметр, уменьшающий вес ранних итераций при онлайн-обучении. Его значение должно быть больше 1.0. В литературе этот параметр называется tau_0.
- max_iterint, default=10
-
Максимальное число проходов по обучающим данным (также называемых эпохами). Влияет только на поведение метода
fit, но не методаpartial_fit. - batch_sizeint, default=128
-
Количество документов, используемых на каждой итерации EM. Используется только при онлайн-обучении.
- evaluate_everyint, default=-1
-
Частота вычисления перплексии. Используется только в методе
fit. Установите значение 0 или отрицательное число, чтобы не вычислять перплексию в процессе обучения. Вычисление перплексии помогает отслеживать сходимость в ходе обучения, но увеличивает общее время обучения. Вычисление перплексии на каждой итерации может увеличить время обучения вдвое. - total_samplesint, default=1e6
-
Общее количество документов. Используется только в методе
partial_fit. - perp_tolfloat, default=1e-1
-
Допуск перплексии. Используется только в том случае, если
evaluate_everyбольше 0. - mean_change_tolfloat, default=1e-3
-
Допуск остановки при обновлении распределения тем документа на E-шаге.
- max_doc_update_iterint, default=100
-
Максимальное количество итераций для обновления распределения тем документа на E-шаге.
- n_jobsint, default=None
-
Количество задач, используемых на E-шаге.
Noneозначает 1, если только не используется контекстjoblib.parallel_backend.-1означает использование всех процессоров. Подробнее см. в глоссарии. - verboseint, default=0
-
Уровень подробности вывода.
- random_stateint, RandomState instance or None, default=None
-
Передайте целое число, чтобы получать воспроизводимые результаты при нескольких вызовах функции. См. глоссарий.
- Атрибуты:
-
- components_ndarray of shape (n_components, n_features)
-
Вариационные параметры распределения слов по темам. Поскольку полное условное распределение слов по темам является распределением Дирихле,
components_[i, j]можно рассматривать как псевдосчётчик, представляющий число раз, когда словоjбыло отнесено к темеi. После нормализации его также можно рассматривать как распределение слов для каждой темы:model.components_ / model.components_.sum(axis=1)[:, np.newaxis]. - exp_dirichlet_component_ndarray of shape (n_components, n_features)
-
Экспонента математического ожидания логарифма распределения слов по темам. В литературе это обозначается как
exp(E[log(beta)]). - n_batch_iter_int
-
Количество итераций шага EM.
- n_features_in_int
-
Количество признаков, обнаруженных во время обучения.
Добавлено в версии 0.24.
-
feature_names_in_ndarray of shape (
n_features_in_,) -
Названия признаков, обнаруженных во время обучения. Определяется только в том случае, если
Xсодержит названия признаков, представленные строками.Добавлено в версии 1.0.
- n_iter_int
-
Количество проходов по набору данных.
- bound_float
-
Итоговая оценка перплексии на обучающей выборке.
- doc_topic_prior_float
-
Априорное распределение тем документа
theta. Если значение равно None, оно равно1 / n_components. - random_state_RandomState instance
-
Экземпляр RandomState, созданный на основе начального значения, генератора случайных чисел или с помощью
np.random. - topic_word_prior_float
-
Априорное распределение слов темы
beta. Если значение равно None, оно равно1 / n_components.
См. также
sklearn.discriminant_analysis.LinearDiscriminantAnalysis-
Классификатор с линейной границей принятия решения, построенной путём подгонки условных плотностей классов к данным и применения правила Байеса.
Литература
[1] (1,2,3)«Онлайн-обучение для латентного размещения Дирихле», Matthew D. Hoffman, David M. Blei, Francis Bach, 2010. blei-lab/onlineldavb
[2]«Стохастический вариационный вывод», Matthew D. Hoffman, David M. Blei, Chong Wang, John Paisley, 2013. https://jmlr.org/papers/volume14/hoffman13a/hoffman13a.pdf
Примеры
>>> from sklearn.decomposition import LatentDirichletAllocation >>> from sklearn.datasets import make_multilabel_classification >>> # This produces a feature matrix of token counts, similar to what >>> # CountVectorizer would produce on text. >>> X, _ = make_multilabel_classification(random_state=0) >>> lda = LatentDirichletAllocation(n_components=5, ... random_state=0) >>> lda.fit(X) LatentDirichletAllocation(...) >>> # get topics for some given samples: >>> lda.transform(X[-2:]) array([[0.00360392, 0.25499205, 0.0036211 , 0.64236448, 0.09541846], [0.15297572, 0.00362644, 0.44412786, 0.39568399, 0.003586 ]])- fit(X, y=None)[исходный код]
-
Обучить модель на данных X с помощью метода вариационного байесовского вывода.
Если
learning_method— ‘online’, используется обновление мини-пакетами. В противном случае используется пакетное обновление.- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Матрица «документ-слово».
- yИгнорируется
-
Не используется; параметр предусмотрен здесь для соблюдения соглашений API.
- Возвращает:
-
- self
-
Обученный оцениватель.
- fit_transform(X, y=None, *, normalize=True)[исходный код]
-
Обучить модель на данных, а затем преобразовать их.
Обучает преобразователь на
Xиyи возвращает преобразованную версиюX.- Параметры:
-
- Xarray-like of shape (n_samples, n_features)
-
Входные выборки.
- yarray-like of shape (n_samples,) or (n_samples, n_outputs), default=None
-
Целевые значения (None для преобразований без учителя).
- normalizebool, default=True
-
Нужно ли нормализовать распределение тем документа в
transform.
- Возвращает:
-
- X_newndarray array of shape (n_samples, n_components)
-
Преобразованный массив.
- get_feature_names_out(input_features=None)[исходный код]
-
Получить названия выходных признаков для преобразования.
К названиям выходных признаков добавляется имя класса в нижнем регистре. Например, если преобразователь возвращает 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()[исходный код]
-
Получить настройки маршрутизации метаданных этого объекта.
Подробнее о работе механизма маршрутизации см. в руководстве пользователя.
- Возвращает:
-
- routingMetadataRequest
-
Объект
MetadataRequest, содержащий сведения о маршрутизации.
- get_params(deep=True)[исходный код]
-
Получить параметры этого оценивателя.
- Параметры:
-
- deepbool, default=True
-
Если значение True, возвращает параметры этого оценивателя и содержащихся в нём вложенных объектов, являющихся оценивателями.
- Возвращает:
-
- paramsdict
-
Сопоставление имён параметров с их значениями.
- partial_fit(X, y=None)[исходный код]
-
Онлайн-вариационный байесовский вывод с обновлением мини-пакетами.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Матрица «документ-слово».
- yИгнорируется
-
Не используется; параметр предусмотрен здесь для соблюдения соглашений API.
- Возвращает:
-
- self
-
Частично обученный оцениватель.
- perplexity(X, sub_sampling=False)[исходный код]
-
Вычислить приближённую перплексию для данных X.
Перплексия определяется как exp(-1. * логарифм правдоподобия на слово).
Изменено в версии 0.19: Аргумент doc_topic_distr объявлен устаревшим и игнорируется, поскольку пользователь больше не имеет доступа к ненормализованному распределению
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Матрица «документ-слово».
- sub_samplingbool
-
Использовать подвыборку или нет.
- Возвращает:
-
- scorefloat
-
Оценка перплексии.
- score(X, y=None)[исходный код]
-
Вычислить приближённое логарифмическое правдоподобие в качестве оценки.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Матрица «документ-слово».
- yИгнорируется
-
Не используется; параметр предусмотрен здесь для соблюдения соглашений API.
- Возвращает:
-
- scorefloat
-
В качестве оценки используется приближённая граница.
- set_output(*, transform=None)[исходный код]
-
Настроить контейнер выходных данных.
Дополнительные сведения см. в руководстве пользователя, а пример использования API — в разделе Знакомство с API set_output.
- Параметры:
-
- transform{“default”, “pandas”, “polars”}, default=None
-
Настроить выходные данные
transformиfit_transform.-
"default": формат выходных данных преобразователя по умолчанию -
"pandas": вывод в формате DataFrame -
"polars": вывод в формате Polars -
None: конфигурация преобразования не изменяется
Добавлено в версии 1.4: Добавлен параметр
"polars". -
- Возвращает:
-
- selfestimator instance
-
Экземпляр оценивателя.
- set_params(**params)[исходный код]
-
Задать параметры этого оценивателя.
Метод работает как с простыми оценивателями, так и с вложенными объектами (например,
Pipeline). Параметры последних имеют вид<component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.- Параметры:
-
- **paramsdict
-
Параметры оценивателя.
- Возвращает:
-
- selfestimator instance
-
Экземпляр оценивателя.
- set_transform_request(*, normalize:bool|None|str='$UNCHANGED$') LatentDirichletAllocation[исходный код]
-
Настроить, следует ли запрашивать передачу метаданных методу
transform.Обратите внимание: этот метод имеет значение только тогда, когда данный оцениватель используется как вложенный оцениватель в составе метаоценивателя и маршрутизация метаданных включена с помощью
enable_metadata_routing=True(см.sklearn.set_config). Подробнее о работе механизма маршрутизации см. в руководстве пользователя.Для каждого параметра доступны следующие значения:
-
True: метаданные запрашиваются и передаются вtransform, если они предоставлены. Если метаданные не предоставлены, запрос игнорируется. -
False: метаданные не запрашиваются, и метаоцениватель не передаёт их вtransform. -
None: метаданные не запрашиваются, и метаоцениватель вызовет ошибку, если пользователь их предоставит. -
str: метаданные следует передавать метаоценивателю под указанным псевдонимом вместо исходного имени.
Значение по умолчанию (
sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменить запрос для одних параметров, не затрагивая остальные.Добавлено в версии 1.3.
- Параметры:
-
- normalizestr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
-
Маршрутизация метаданных для параметра
normalizeвtransform.
- Возвращает:
-
- selfobject
-
Обновлённый объект.
-
- transform(X, *, normalize=True)[исходный код]
-
Преобразует данные X в соответствии с обученной моделью.
Изменено в версии 0.18:
doc_topic_distrтеперь нормализуется.- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Матрица слов документов.
- normalizebool, default=True
-
Следует ли нормализовать распределение тем документа.
- Возвращает:
-
- doc_topic_distrndarray of shape (n_samples, n_components)
-
Распределение тем документов для X.
Примеры из галереи
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.decomposition.LatentDirichletAllocation.html