我正在使用KMeans对文本进行分组编码,一切正常,但我无法将质心绘制在一起。我不知道如何使用matplotlib,只有seaborn和tdidf创建的向量
MiniBatchKMeans有变量cluster_centers_
,但我无法在映像中使用它
from sklearn.feature_extraction.text import TfidfVectorizer
df_abstracts = df_cleared['abstract'].tolist() # list with 33,000 lines of strings
tfidf = TfidfVectorizer(max_features=2**12, ngram_range=(1,4), stop_words = 'english')
vextorized = tfidf.fit_transform(df_abstracts)
#For the plot generation, I do this dimensionality reduction from 33,000 to 2.
from sklearn.decomposition import PCA
pca = PCA(n_components = 9)
X_pca = pca.fit_transform(vextorized.toarray())
from sklearn.cluster import MiniBatchKMeans
kmeans = MiniBatchKMeans(init='k-means++', n_clusters=4, max_iter=500, n_init=10,
random_state=9)
y_pred = kmeans.fit_predict(vextorized)
np.unique(y_pred)
palette = sns.color_palette('bright', len(set(y_pred)))
sns.scatterplot(X_pca[:,0], X_pca[:, 1], hue=y_pred, legend='full', palette=palette)
plt.title('Clustered')
你在原始数据上做了k均值聚类,所以对于投影到PCA空间上的中心,你需要再次变换它
我使用了一个示例数据集:
此部分执行pca时,您需要保留拟合,以便可以使用它来投影kmeans中心:
这是具有实际标签的数据的外观:
现在,kmeans:
我们在前两个组件上投影中心,并绘制它们:
相关问题 更多 >
编程相关推荐