LatentDirichletAllocation#

класс sklearn.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, по умолчанию=10

Количество тем.

Изменено в версии 0.19: n_topics был переименован в n_components

doc_topic_priorfloat, по умолчанию=None

Априорное распределение тем документов theta. Если значение None, по умолчанию 1 / n_components. В [1], это называется alpha.

topic_word_priorfloat, по умолчанию=None

Априорное распределение слов темы beta. Если значение равно None, по умолчанию устанавливается 1 / n_components. В [1], это называется eta.

learning_method{'batch', 'online'}, по умолчанию='batch'

Метод, используемый для обновления _component. Используется только в fit метод. В целом, если размер данных большой, онлайн-обновление будет значительно быстрее, чем пакетное обновление.

Допустимые опции:

  • 'batch': Метод батчевого вариационного Байеса. Использует все обучающие данные в каждом обновлении EM. Старый components_ будет перезаписываться на каждой итерации.

  • 'online': Онлайн-метод вариационного Байеса. В каждом обновлении EM используйте мини-пакет обучающих данных для обновления components_ переменную инкрементально. Скорость обучения контролируется learning_decay и learning_offset параметры.

Изменено в версии 0.20: Метод обучения по умолчанию теперь "batch".

learning_decayfloat, по умолчанию=0.7

Это параметр, который контролирует скорость обучения в методе онлайн-обучения. Значение должно быть установлено в диапазоне (0.5, 1.0], чтобы гарантировать асимптотическую сходимость. Когда значение равно 0.0, а batch_size равен n_samples, метод обновления такой же, как при пакетном обучении. В литературе это называется каппа.

learning_offsetfloat, по умолчанию=10.0

(Положительный) параметр, который уменьшает вес ранних итераций в онлайн-обучении. Он должен быть больше 1.0. В литературе это называется tau_0.

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

Максимальное количество проходов по обучающим данным (также называемых эпохами). Это влияет только на поведение в fit метод, а не partial_fit метод.

batch_sizeint, по умолчанию=128

Количество документов для использования на каждой итерации EM. Используется только при онлайн-обучении.

evaluate_everyint, по умолчанию=-1

Как часто оценивать перплексию. Используется только в fit метод. Установите его в 0 или отрицательное число, чтобы не оценивать перплексию во время обучения вообще. Оценка перплексии может помочь проверить сходимость в процессе обучения, но также увеличит общее время обучения. Оценка перплексии на каждой итерации может увеличить время обучения до двух раз.

total_samplesint, default=1e6

Общее количество документов. Используется только в partial_fit метод.

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

Допуск перплексии. Используется только при evaluate_every больше 0.

mean_change_tolfloat, по умолчанию=1e-3

Допуск остановки для обновления распределения тем документов на E-шаге.

max_doc_update_iterint, по умолчанию=100

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

n_jobsint, default=None

Количество заданий для использования на E-шаге. None означает 1, если только не в joblib.parallel_backend контекст. -1 означает использование всех процессоров. См. Глоссарий для получения дополнительной информации.

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

Уровень подробности вывода.

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

Передайте целое число для воспроизводимых результатов при многократных вызовах функции. См. Глоссарий.

Атрибуты:
components_ndarray формы (n_components, n_features)

Вариационные параметры для распределения слов по темам. Поскольку полное условное распределение для распределения слов по темам является Дирихле, components_[i, j] можно рассматривать как псевдосчетчик, представляющий количество раз, когда слово j был назначен теме i. Это также можно рассматривать как распределение по словам для каждой темы после нормализации: model.components_ / model.components_.sum(axis=1)[:, np.newaxis].

exp_dirichlet_component_ndarray формы (n_components, n_features)

Экспоненциальное значение математического ожидания логарифмического распределения слов по темам. В литературе это exp(E[log(beta)]).

n_batch_iter_int

Количество итераций шага EM.

n_features_in_int

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

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

feature_names_in_ndarray формы (n_features_in_,)

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

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

n_iter_int

Количество проходов по набору данных.

bound_float

Итоговый показатель перплексии на обучающем наборе.

doc_topic_prior_float

Априорное распределение тем документов theta. Если значение равно None, это 1 / n_components.

random_state_экземпляр RandomState

экземпляр RandomState, который генерируется либо из сида, генератора случайных чисел, либо с помощью np.random.

topic_word_prior_float

Априорное распределение слов темы beta. Если значение равно None, оно 1 / n_components.

Смотрите также

sklearn.discriminant_analysis.LinearDiscriminantAnalysis

Классификатор с линейной границей решений, созданный путем подгонки условных плотностей классов к данным и использования правила Байеса.

Ссылки

[1] (1,2,3)

"Online Learning for Latent Dirichlet Allocation", Matthew D. Hoffman, David M. Blei, Francis Bach, 2010. blei-lab/onlineldavb

[2]

“Стохастический вариационный вывод”, Мэтью Д. Хоффман, Дэвид М. Блей, Чонг Ван, Джон Пейсли, 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} формы (n_samples, n_features)

Матрица документ-слово.

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

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

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

Обученный оценщик.

fit_transform(X, y=None, *, нормализовать=True)[источник]#

Обучение на данных с последующим преобразованием.

Обучает преобразователь на X и y и возвращает преобразованную версию X.

Параметры:
Xarray-like формы (n_samples, n_features)

Входные выборки.

yarray-like формы (n_samples,) или (n_samples, n_outputs), default=None

Целевые значения (None для неконтролируемых преобразований).

нормализоватьbool, по умолчанию=True

Нормализовать ли распределение тем документа в transform.

Возвращает:
X_newndarray массив формы (n_samples, n_components)

Преобразованный массив.

get_feature_names_out(input_features=None)[источник]#

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

Имена признаков на выходе будут иметь префикс в виде имени класса в нижнем регистре. Например, если преобразователь выводит 3 признака, то имена признаков на выходе: ["class_name0", "class_name1", "class_name2"].

Параметры:
input_featuresarray-like из str или None, по умолчанию=None

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

Возвращает:
feature_names_outndarray из str объектов

Преобразованные имена признаков.

6332()[источник]#

Получить маршрутизацию метаданных этого объекта.

Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.

Возвращает:
маршрутизацияMetadataRequest

A MetadataRequest Инкапсуляция информации о маршрутизации.

get_params(глубокий=True)[источник]#

Получить параметры для этого оценщика.

Параметры:
глубокийbool, по умолчанию=True

Если True, вернет параметры для этого оценщика и вложенных подобъектов, которые являются оценщиками.

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

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

partial_fit(X, y=None)[источник]#

Онлайн VB с обновлением мини-пакета.

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

Матрица документ-слово.

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

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

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

Частично обученный оценщик.

перплексия(X, sub_sampling=False)[источник]#

Рассчитать приближенную перплексию для данных X.

Перплексия определяется как exp(-1. * логарифмическое правдоподобие на слово)

Изменено в версии 0.19: doc_topic_distr аргумент устарел и игнорируется, поскольку пользователь больше не имеет доступа к ненормализованному распределению

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

Матрица документ-слово.

sub_samplingbool

Выполнять субдискретизацию или нет.

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

Оценка перплексии.

score(X, y=None)[источник]#

Вычислить приближенное логарифмическое правдоподобие в качестве оценки.

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

Матрица документ-слово.

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

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

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

Использовать приближенную границу в качестве оценки.

set_output(*, преобразовать=None)[источник]#

Установить контейнер вывода.

См. Введение API set_output для примера использования API.

Параметры:
преобразовать{“default”, “pandas”, “polars”}, по умолчанию=None

Настройка вывода transform и fit_transform.

  • "default": Формат вывода трансформера по умолчанию

  • "pandas": DataFrame вывод

  • "polars": Вывод Polars

  • None: Конфигурация преобразования не изменена

Добавлено в версии 1.4: "polars" опция была добавлена.

Возвращает:
selfэкземпляр estimator

Экземпляр оценщика.

set_params(**params)[источник]#

Установить параметры этого оценщика.

Метод работает как на простых оценщиках, так и на вложенных объектах (таких как Pipeline). Последние имеют параметры вида __ чтобы можно было обновить каждый компонент вложенного объекта.

Параметры:
**paramsdict

Параметры оценщика.

Возвращает:
selfэкземпляр estimator

Экземпляр оценщика.

set_transform_request(*, нормализовать: 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.

Параметры:
нормализоватьstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для normalize параметр в transform.

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

Обновленный объект.

преобразовать(X, *, нормализовать=True)[источник]#

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

Изменено в версии 0.18: doc_topic_distr теперь нормализован.

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

Матрица документ-слово.

нормализоватьbool, по умолчанию=True

Нормализовать ли распределение тем документов.

Возвращает:
doc_topic_distrndarray формы (n_samples, n_components)

Распределение тем документа для X.