使用k-means對文本進行聚類

1、數(shù)據(jù)說明
corpus為一個list,每一項代表一個文本,每個文本為分詞后的數(shù)據(jù)。

2、導(dǎo)入包

from sklearn.feature_extraction.text importTfidfVectorizer
from sklearn.manifold import TSNE
from sklearn.cluster import KMeans
import jieba
import matplotlib.pyplot as plt

3、使用TF-IDF特征進行聚類

tfidf_model = TfidfVectorizer().fit(corpus)
tfidf_matrix = tfidf_model.transform(corpus)
num_clusters = 10
km_cluster = KMeans(n_clusters=num_clusters, max_iter=300, n_init=40, 
                    init='k-means++',n_jobs=-1)
result = km_cluster.fit_predict(tfidf_matrix)
tfidf_weight = tfidf_matrix.toarray()

4、可視化

# 使用T-SNE算法,對權(quán)重進行降維,準確度比PCA算法高,但是耗時長
tsne = TSNE(n_components=2)
decomposition_data = tsne.fit_transform(tfidf_weight)

x = []
y = []

for i in decomposition_data:
    x.append(i[0])
    y.append(i[1])

fig = plt.figure(figsize=(10, 10))
ax = plt.axes()
plt.scatter(x, y, c=km_cluster.labels_, marker="x")
plt.xticks(())
plt.yticks(())
plt.show()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容