gpt4 book ai didi

python - sklearn Latent Dirichlet 分配变换 v. Fittransform

转载 作者:太空狗 更新时间:2023-10-29 22:18:12 26 4
gpt4 key购买 nike

我正在使用 sklearn 的 NMF 和 LDA 子模块来分析未标记的文本。我阅读了文档,但不确定这些模块(NMF 和 LDA)中的变换函数是否与 R 的主题模型中的后验函数相同(请参阅 Predicting LDA topics for new data)。基本上,我正在寻找一个函数,它可以让我使用在训练集数据上训练的模型来预测测试集中的主题。我预测了整个数据集的主题。然后我将数据分成训练集和测试集,在训练集上训练模型并使用该模型转换测试集。虽然预计我不会得到相同的结果,但比较这两个运行主题并不能向我保证转换函数与 R 的包具有相同的功能。非常感谢您的回复。

谢谢

最佳答案

LatentDirichletAllocation 模型上调用 transform 会返回一个未规范化的文档主题分布。要获得适当的概率,您可以简单地将结果归一化。这是一个例子:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.decomposition import LatentDirichletAllocation
from sklearn.datasets import fetch_20newsgroups
import numpy as np

# grab a sample data set
dataset = fetch_20newsgroups(shuffle=True, remove=('headers', 'footers', 'quotes'))
train,test = dataset.data[:100], dataset.data[100:200]

# vectorizer the features
tf_vectorizer = TfidfVectorizer(max_features=25)
X_train = tf_vectorizer.fit_transform(train)

# train the model
lda = LatentDirichletAllocation(n_topics=5)
lda.fit(X_train)

# predict topics for test data
# unnormalized doc-topic distribution
X_test = tf_vectorizer.transform(test)
doc_topic_dist_unnormalized = np.matrix(lda.transform(X_test))

# normalize the distribution (only needed if you want to work with the probabilities)
doc_topic_dist = doc_topic_dist_unnormalized/doc_topic_dist_unnormalized.sum(axis=1)

要找到排名靠前的主题,您可以执行以下操作:

doc_topic_dist.argmax(axis=1)

关于python - sklearn Latent Dirichlet 分配变换 v. Fittransform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40597075/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com