gpt4 book ai didi

python - NMF 作为 Python Scikit 中的聚类方法

转载 作者:太空宇宙 更新时间:2023-11-03 15:36:36 24 4
gpt4 key购买 nike

我正在为 NMF 文本数据聚类实现一个 Python 脚本。在我的工作中,我使用的是 Scikit NMF 实现,但据我了解,在 Scikit NMF 中更像是分类方法而不是聚类方法。

我开发了一个简单的脚本来处理一些示例文章。我正在对它们进行预处理并将其作为 NMF 的输入。根据我的教授分享的论文,我收到了一些集群,但我不知道如何可视化/呈现它们。

你们中的任何人都知道如何使这篇文章阅读起来更人性化吗? :)

主脚本代码如下:

from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
from sklearn.cluster import KMeans
from sklearn.preprocessing import normalize
from sklearn.decomposition import LatentDirichletAllocation, NMF
from sklearn.preprocessing import normalize
import pandas as pd
from preprocess import *


# loading data
raw_text_data = loading_bbc_datasets(5)

text_data = text_preparing(raw_text_data)
tf_vectorizer = TfidfVectorizer()
Y = tf_vectorizer.fit_transform(text_data)
Y_norm = normalize(Y)

nmf = NMF(n_components=5, random_state=1, alpha=.1, l1_ratio=0.5)
A = nmf.fit_transform(Y_norm)
X = nmf.components_
features = tf_vectorizer.get_feature_names()
print(features)

AF = pd.DataFrame(Y_norm.toarray())
WF = pd.DataFrame(A)
HF = pd.DataFrame(X)

AF.to_csv('Y.csv', sep=',', header=features)
WF.to_csv('A.csv', sep=',', header=['C1', 'C2', 'C3', 'C4', 'C5'])
HF.to_csv('X.csv', sep=',', header=features)

最佳答案

NMF不是一种分类方法,它是一种降维方法。当您使用 CountVectorizer 处理文本时,您有大量的维度,NMF 允许减少它。

NMF 通过 W * H 来近似文档*术语矩阵 X。

新的维度可以看作是主题,因此对于给定的文档,您可以在 W 中看到文档最属于哪些主题,因为值是非负的(如果值高,则文档与主题高度相关) ).

类似地,对于给定的主题,您可以使用 H 获取与其高度相关的词。

要回答您的问题,您可以将文档聚类为主题,并通过提供最相关的词以人性化的方式表示每个主题。

关于python - NMF 作为 Python Scikit 中的聚类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54449518/

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