【发布时间】:2020-09-08 20:10:57
【问题描述】:
我正在编码使用 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-means(无监督方法),而不是 K-NN(监督学习模型)
标签: python matplotlib seaborn k-means tf-idf