-2

问题

我在 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)  
4

3 回答 3

0

K-mean 算法生成的集群将您的输入空间分成 K 个区域。当你有新数据时,你可以知道它属于哪个区域,从而对它进行分类。

质心只是这些集群的一个属性。

如果不确定,可以查看 scikit-learn文档,并查看地图以确保选择正确的算法。

于 2015-10-22T11:31:54.477 回答
0

质心实际上是学习到的特征。由于 k-means 是一种向量量化方法,我们查找哪个观测属于哪个集群,因此最好用特征向量(质心)来描述。

例如,通过将一个观察结果分成 10 个块,观察结果可能最多包含 10 个特征向量。

例子:

方法: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 组成。您还可以使用补丁和质心之间的距离来测量,而不是这种硬分配。

于 2015-12-11T14:01:18.843 回答
0

这是一个循环问题:“理解”需要了解 k-means 过程之外的特征。k-means 所做的只是识别 k 组物理接近度。它说“在这些‘k’的地方有一堆东西,这就是所有点如何选择最近的。”

这在特征方面意味着什么取决于数据科学家,而不是 k-means 可以赋予的任何更深层次的含义。每组的方差可能会告诉您一些关于这些点聚集的紧密程度。请记住,k-means 也随机选择起点;一个不幸的选择很容易给出对空间的次优描述。

质心基本上是集群的“平均值”。如果您可以从质心的分布中获得更深入的理解,那很好——但这取决于数据和特征,而不是从 k-means 演变而来的任何重要意义。

这是您需要的答案水平吗?

于 2015-10-22T18:35:47.190 回答