gpt4 book ai didi

python - 更改 kmeans 模型的集群标签

转载 作者:行者123 更新时间:2023-11-30 09:39:17 28 4
gpt4 key购买 nike

我在 Doc2Vec 模型的文档嵌入上拟合了 Kmeans 模型,以对嵌入进行聚类并获得可视化以及每个聚类最常用的术语。我已经能够做到这一点并且每次都获得相同的可视化效果。

当我在模型上运行 kmeans.fit_predict 时,它会根据我指定的簇提供一个簇标签列表,其长度与我拥有的文档嵌入数量相同。多次运行模型时会出现问题,它每次都会为每个集群提供相似的分布,但集群标签在多次运行后会发生变化。例如,

  1. 运行 1 - 0:100、1:100、2:10
  2. 运行 2 - 0:99、1:101、2:10
  3. 运行 3 - 2:100、0:100、1:10
  4. 运行 4 - 0:100、1:100、2:10

我尝试保存模型并多次使用相同的模型,但遇到了相同的问题。这会导致每个聚类中最常见的术语以及可视化中聚类的位置发生变化,从而改变其解释方式。我本来打算使用标签作为分类方法,但这不是不可能吗?我不确定这是否是我的代码的问题,或者这是否是正常行为,如果有人可以提供帮助,我们将不胜感激。

df = pd.read_csv("data.csv")
d2v_model = Doc2Vec.load("d2vmodel")

clusters = 3
iterations = 100

kmeans_model = KMeans(n_clusters=clusters, init='k-means++', max_iter=iterations)
X = kmeans_model.fit(d2v_model.docvecs.vectors_docs)
l = kmeans_model.fit_predict(d2v_model.docvecs.vectors_docs)
labels = kmeans_model.labels_.tolist()

pca = PCA(n_components=2).fit(d2v_model.docvecs.vectors_docs)
datapoint = pca.transform(d2v_model.docvecs.vectors_docs)

df["clusters"] = labels
cluster_list = []
cluster_colors = ["#FFFF00", "#008000", "#0000FF"]
plt.figure
color = [cluster_colors[i] for i in labels]
plt.scatter(datapoint[:, 0], datapoint[:, 1], c=color)
centroids = kmeans_model.cluster_centers_
centroidpoint = pca.transform(centroids)
plt.scatter(centroidpoint[:, 0], centroidpoint[:, 1], marker="^", s=150, c="#000000")

plt.show()

for i in range(clusters):
df_temp = df[df["clusters"]==i]
cluster_words = Counter(" ".join(df_temp["Body"].str.lower()).split()).most_common(25)
[cluster_list.append(x[0]) for x in cluster_words]
cluster_list.clear()

最佳答案

对于Kmeans,当你多次运行fit时,每次质心都会随机初始化。为了使其具有确定性,您可以使用 random_state 参数。您可以引用文档 https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html

 kmeans_model = KMeans(n_clusters=clusters, init='k-means++', max_iter=iterations, random_state = 'int number need to given') 

关于python - 更改 kmeans 模型的集群标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59979363/

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