KMeans和创建树状图是否会产生相同的标签?

我正在使用一些数据来生成一些标签,以便可以对我的数据进行排序,以在有监督的学习环境中使用。我一直在生成树状图以可视化数据聚类的方式,但是当我使用KMeans创建标签时,只有少数标签显示它们在所显示的树状图的聚类中。

代码:

combined_array = pd.read_pickle('arrays.pickle')
model = KMeans(algorithm = 'auto',copy_x = True,init = 'k-means++',max_iter = 300,n_clusters = 7,n_init = 10,n_jobs = 1,precompute_distances = 'auto',random_state = 1,tol = 0.0001,verbose = 0)
model.fit(combined_array)
labels = model.predict(combined_array)
pd.DataFrame(labels).to_csv("arrays_labels.csv")
mergings = linkage(combined_array,method = 'ward')
dendrogram(mergings,leaf_rotation = 0,leaf_font_size = 14,show_contracted = True)

KMeans和创建树状图是否会产生相同的标签?

上图显示了该群集中应包含哪些文件的一部分,但是当我使用kmeans生成标签时,仅包含文件28,33,41,45,70。那么,为什么13,42,67,81没有出现在我的标签中? KMeansdendrogram是否创建不同类型的集群?

gdfg3ggf 回答:KMeans和创建树状图是否会产生相同的标签?

我并没有真正将您的代码链接到您要的内容,但是可以!他们完全不同!

树状图是通过应用非常简单且确定的分层聚类完成的(您将其应用2次?您将获得相同的结果)。 它是这样工作的:

1) Compute distance between points
2) Select the minimun distance
3) Aggregate the 2 points with minimum distance in a cluster 
4) Go to 1 until you get 1 cluster containing all elements

这里省略了很多细节,但这是核心。 如您所见,它基于点之间的距离,但并不能告诉您哪种集群配置是最佳的,因此有一些技术可以选择集群数量。

K-means必须事先知道要查找的集群数(请参见在代码中指定n_clusters)。

它是这样的:

1) Randomly initialize n Centroids (center of mass of a cluster)
2) Assign each point to its closest centroid
3) Re-compute center of mass of the clusters created
4) Go to 2 until convergence

所以-如果我是对的-您想做的就是从聚类算法生成标签,然后拟合监督模型。

因此,您要查找的只是集群模型选择

要选择最佳数量的集群和最佳算法,有很多技术高度依赖于您的问题和数据(在进行任何类型的集群之前,请深入查看scikit文档) 如果您想采用一般方法,请尝试查看this库,该库可以在您提供的库中选择最佳结果。

PS:通常可以顺利使用的方法是Silouhettes Analysis

本文链接:https://www.f2er.com/3093370.html

大家都在问