LatentDirichletAllocation#
- class 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)[源代码]#
采用在线变分Bayes算法的潜在Dirichlet分配。
Added in version 0.17.
阅读更多的 User Guide .
- 参数:
- n_componentsint,默认值=10
题目数。
在 0.19 版本发生变更:
n_topics
更名为n_components
- doc_topic_priorfloat,默认=无
文件主题分发之前
theta
.如果值为无,则默认为1 / n_components
.在 [1], 这被称为alpha
.- topic_word_priorfloat,默认=无
主题词分布先验
beta
.如果值为无,则默认为1 / n_components
.在 [1], 这被称为eta
.- learning_method'批','在线'},默认='批'
用于更新的方法
_component
.仅用于fit
法一般来说,如果数据量较大,在线更新会比批量更新快得多。有效选项:
“批处理”:批处理变分Bayes方法。在每次EM更新中使用所有训练数据。老
components_
将在每次迭代中被覆盖。“在线”:在线变分Bayes方法。在每次EM更新中,使用小批训练数据来更新
components_
增量变量。学习率由learning_decay
和learning_offset
参数
在 0.20 版本发生变更: 默认的学习方法是现在
"batch"
.- learning_decay浮点数,默认值=0.7
它是在线学习方法中控制学习率的参数。该值应设置在(0.5,1.0)之间,以保证渐进收敛。当值为0.0且batch_size为
n_samples
,更新方法与批量学习相同。在文献中,这被称为kappa。- learning_offset浮点数,默认值=10.0
一个(正)参数,可以减轻在线学习中早期迭代的权重。 它应该大于1.0。在文献中,这被称为tau_0。
- max_iterint,默认值=10
训练数据(又名epochs)的最大传递次数。它只会影响
fit
方法,而不是partial_fit
法- batch_sizeint,默认=128
每个EM迭代中使用的文档数量。仅用于在线学习。
- evaluate_everyint,默认=-1
评估困惑的频率。仅用于
fit
法将其设置为0或负值,根本不评估训练中的困惑。评估困惑度可以帮助您检查训练过程中的收敛性,但也会增加总训练时间。在每次迭代中评估困惑度可能会将训练时间增加两倍。- total_samplesint, default=1e6
文档总数。仅用于
partial_fit
法- perp_tol浮动,默认= 1 e-1
困惑宽容。仅在当
evaluate_every
大于0。- mean_change_tol浮点数,默认值= 1 e-3
Stopping tolerance for updating document topic distribution in E-step.
- max_doc_update_iterint,默认=100
E步骤中更新文档主题分发的最大迭代次数。
- n_jobsint,默认=无
E步骤中要使用的作业数。
None
意思是1,除非在a中joblib.parallel_backend
上下文-1
意味着使用所有处理器。看到 Glossary 了解更多详细信息。- verboseint,默认=0
冗长级别。
- random_stateint,RandomState实例或无,默认=无
传递int以获得跨多个函数调用的可重复结果。看到 Glossary .
- 属性:
- components_ndrow形状数组(n_components,n_features)
主题词分布的变分参数。由于主题词分布的完整条件是Dirichlet,
components_[i, j]
可以被视为代表单词次数的伪计数j
被分配到主题i
.它也可以被视为归一化后每个主题的单词分布:model.components_ / model.components_.sum(axis=1)[:, np.newaxis]
.- exp_dirichlet_component_ndrow形状数组(n_components,n_features)
日志主题词分布期望的指数值。在文献中,这是
exp(E[log(beta)])
.- n_batch_iter_int
EM步骤的迭代次数。
- n_features_in_int
期间看到的功能数量 fit .
Added in version 0.24.
- feature_names_in_ :nd形状数组 (
n_features_in_
,)nd数组形状( Names of features seen during fit. Defined only when
X
has feature names that are all strings.Added in version 1.0.
- n_iter_int
数据集的传递次数。
- bound_浮子
训练集的最终困惑分数。
- doc_topic_prior_浮子
文件主题分发之前
theta
.如果值为None,则为1 / n_components
.- random_state_RandomState实例
RandomState实例,该实例由种子、随机数生成器或
np.random
.- topic_word_prior_浮子
主题词分布先验
beta
.如果值为None,则为1 / n_components
.
参见
sklearn.discriminant_analysis.LinearDiscriminantAnalysis
具有线性决策边界的分类器,通过将类别条件密度与数据匹配并使用Bayes规则生成。
引用
[2]“随机变分推理”,马修·D。大卫·M·霍夫曼布莱、王冲、约翰·佩斯利,2013
示例
>>> 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)[源代码]#
使用变分Bayes方法学习数据X的模型。
当
learning_method
是“在线”,请使用小批量更新。否则,请使用批量更新。- 参数:
- X形状(n_samples,n_features)的{类数组,稀疏矩阵}
文档单词矩阵。
- y忽视
未使用,此处列出是为了按照惯例实现API一致性。
- 返回:
- 自我
拟合估计量。
- fit_transform(X, y=None, *, normalize=True)[源代码]#
适应数据,然后对其进行转换。
适合变压器
X
和y
并返回的转换版本X
.- 参数:
- X形状类似阵列(n_samples,n_features)
输入样本。
- y形状为(n_samples,)或(n_samples,n_outputs)的阵列状, 默认值=无
目标值(无监督转换)。
- normalize布尔,默认=True
是否规范文档主题分布
transform
.
- 返回:
- X_newndray形状数组(n_samples,n_features_new)
变形的数组。
- get_feature_names_out(input_features=None)[源代码]#
获取用于转换的输出要素名称。
输出的功能名称将以大写的类别名称为开头。例如,如果Transformer输出3个特征,则输出的特征名称为:
["class_name0", "class_name1", "class_name2"]
.- 参数:
- input_features字符串或无的类数组,默认=无
仅用于通过中看到的名称验证要素名称
fit
.
- 返回:
- feature_names_out字符串对象的nd数组
转换的功能名称。
- get_metadata_routing()[源代码]#
获取此对象的元数据路由。
请检查 User Guide 关于路由机制如何工作。
- 返回:
- routingMetadataRequest
A
MetadataRequest
封装路由信息。
- get_params(deep=True)[源代码]#
获取此估计器的参数。
- 参数:
- deep布尔,默认=True
如果为True,将返回此估计量和包含的作为估计量的子对象的参数。
- 返回:
- paramsdict
参数名称映射到其值。
- partial_fit(X, y=None)[源代码]#
在线VB,带有迷你批量更新。
- 参数:
- X形状(n_samples,n_features)的{类数组,稀疏矩阵}
文档单词矩阵。
- y忽视
未使用,此处列出是为了按照惯例实现API一致性。
- 返回:
- 自我
部分适合的估计量。
- perplexity(X, sub_sampling=False)[源代码]#
计算数据X的大致困惑度。
困惑被定义为BEP(-1。* 每个词的log似然度)
在 0.19 版本发生变更: doc_topic_distr 参数已被弃用并被忽略,因为用户不再有权访问非规范化分发
- 参数:
- X形状(n_samples,n_features)的{类数组,稀疏矩阵}
文档单词矩阵。
- sub_samplingbool
是否进行二次抽样。
- 返回:
- score浮子
困惑分数。
- score(X, y=None)[源代码]#
计算大致的log似然度作为分数。
- 参数:
- X形状(n_samples,n_features)的{类数组,稀疏矩阵}
文档单词矩阵。
- y忽视
未使用,此处列出是为了按照惯例实现API一致性。
- 返回:
- score浮子
使用大致界限作为分数。
- set_output(*, transform=None)[源代码]#
设置输出容器。
看到 介绍 set_output API 了解如何使用API的示例。
- 参数:
- transform{“默认”,“pandas”,“polars”},默认=无
配置输出
transform
和fit_transform
."default"
:Transformer的默认输出格式"pandas"
:DataFrame输出"polars"
:两极输出None
:转换配置不变
Added in version 1.4:
"polars"
添加了选项。
- 返回:
- self估计器实例
估计实例。
- set_params(**params)[源代码]#
设置此估计器的参数。
该方法适用于简单估计器以及嵌套对象(例如
Pipeline
).后者具有以下形式的参数<component>__<parameter>
以便可以更新嵌套对象的每个组件。- 参数:
- **paramsdict
估计参数。
- 返回:
- self估计器实例
估计实例。
- set_transform_request(*, normalize: bool | None | str = '$UNCHANGED$') LatentDirichletAllocation [源代码]#
请求元数据传递给
transform
法请注意,此方法仅适用于以下情况
enable_metadata_routing=True
(见sklearn.set_config
).请参阅 User Guide 关于路由机制如何工作。The options for each parameter are:
True
:元数据被请求并传递给transform
如果提供的话。如果未提供元数据,则会忽略请求。False
:未请求元数据,元估计器不会将其传递给transform
.None
:不请求元数据,如果用户提供元估计器,则元估计器将引发错误。str
:元数据应通过此给定别名而不是原始名称传递给元估计器。
默认 (
sklearn.utils.metadata_routing.UNCHANGED
)保留现有请求。这允许您更改某些参数的请求,而不是其他参数。Added in version 1.3.
备注
只有当该估计器用作元估计器的子估计器时,该方法才相关,例如在
Pipeline
.否则就没有效果了。- 参数:
- normalize字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged
元数据路由
normalize
参数transform
.
- 返回:
- self对象
更新的对象。