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": Вывод PolarsNone: Конфигурация преобразования не изменена
Добавлено в версии 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.