1、数据说明
corpus为一个list,每一项代表一个文本,每个文本为分词后的数据。
2、导入包
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算法,对权重进行降维,准确度比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()