我在Python中实现了K-Means算法。首先,我将PCA和白化应用于输入数据。然后我使用k-means成功地从数据中减去k个质心。
我如何使用这些质心来理解"功能"学到了?质心是否已成为特征(对我来说似乎不是这样)或者我是否需要再次将它们与输入数据相结合?
由于一些答案:K-means不是"只是"一种用于聚类的方法,而不是一种矢量量化方法。这就是说k-means的目标是描述具有减少数量的特征向量的数据集。因此,对于潜在结果,稀疏过滤/学习等方法有很大的类比。
# Perform K-means, data already pre-processed
centroids = k_means(matrix_pca_whitened,1000)
# Assign data to centroid
idx,_ = vq(song_matrix_pca,centroids)
答案 0 :(得分:0)
由K-mean算法生成的聚类将您的输入空间分成K个区域。当您有新数据时,您可以告诉它属于哪个区域,从而对其进行分类。
质心只是这些星团的一个属性。
答案 1 :(得分:0)
这是一个循环问题:"理解"需要了解k-means过程之外的特征。 k-means所做的就是识别k组物理接近度。它说"在这些' k'中有一些东西。地点,以及所有点如何选择最近的点。"
在功能方面,这意味着数据科学家,而不是k-means可以归因的任何更深层含义。每个组的方差可能会告诉您这些点聚集的紧密程度。请记住,k-means也随机选择起点;一个不幸的选择很容易给出空间的次优描述。
质心基本上是"意思是"集群如果你可以从质心的分布中得出更深刻的理解,那么很好 - 但这取决于数据和特征,而不是从k均值中转移出来的任何重要意义。
这是您需要的答案级别吗?
答案 2 :(得分:0)
质心实际上是学到的特征。由于k-means是一种矢量量化方法,我们查找哪个观察属于哪个簇,因此最好用特征向量(质心)来描述。
通过一次观察,例如之前分为10个补丁,观察可能包含10个特征向量max。
示例:
方法:K-means,k = 10
数据集:20个观测值分为2个补丁,每个补丁= 40个数据向量
我们现在在这个修补的数据集上执行K-means并获得每个补丁最近的质心。然后,我们可以为长度为10(= k)的20个观测值中的每一个创建一个向量,如果补丁1属于质心5且补丁2属于质心9,则向量可能看起来像:0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 1 - 0.
这意味着这个观察包括质心/特征5和9.您还可以测量使用补丁和质心之间的距离而不是这个硬分配。