gpt4 book ai didi

python - Scikit Learn K-means 聚类和 TfidfVectorizer : How to pass top n terms with highest tf-idf score to k-means

转载 作者:行者123 更新时间:2023-12-01 00:35:06 24 4
gpt4 key购买 nike

我正在基于 TFIDF 矢量器对文本数据进行聚类。该代码运行良好。它将整个 TFIDF 矢量器输出作为 K-Means 聚类的输入并生成散点图。相反,我只想发送基于 TF-IDF 分数的前 n 项作为 k 均值聚类的输入。有办法实现吗?

vect = TfidfVectorizer(ngram_range=(1,3),stop_words='english')

tfidf_matrix = vect.fit_transform(df_doc_wholetext['csv_text'])


'''create k-means model with custom config '''
clustering_model = KMeans(
n_clusters=num_clusters,
max_iter=max_iterations,
precompute_distances="auto",
n_jobs=-1
)

labels = clustering_model.fit_predict(tfidf_matrix)

x = tfidf_matrix.todense()

reduced_data = PCA(n_components=pca_num_components).fit_transform(x)


fig, ax = plt.subplots()
for index, instance in enumerate(reduced_data):
pca_comp_1, pca_comp_2 = reduced_data[index]
color = labels_color_map[labels[index]]
ax.scatter(pca_comp_1,pca_comp_2, c = color)
plt.show()

最佳答案

在TfidfVectorizer中使用max_features来考虑前n个特征

vect = TfidfVectorizer(ngram_range=(1,3),stop_words='english', max_features=n)

根据 scikit-learn 的文档,max_features 采用 int 或 None 值(默认=None)。如果不是 None,TfidfVectorizer 会构建一个词汇表,该词汇表仅考虑按语料库中的术语频率排序的顶部 max_features。

这是link

关于python - Scikit Learn K-means 聚类和 TfidfVectorizer : How to pass top n terms with highest tf-idf score to k-means,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57856087/

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