Spec-Zone.ru › scikit-learn

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".

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

Spec-Zone.ru

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