我的数据是157维,有688个数据点。有了我想要执行聚类的数据。
由于K-Means是最简单的算法,我决定从这个方法开始。
这是Sklearn函数调用:
KMeans(init='k-means++', n_clusters=4, n_init=10), name="k-means++", data=sales)
以下是一些输出指标:
init time inertia homo compl v-meas ARI AMI num_clusters
k-means++ 0.06s 38967 0.262 0.816 0.397 0.297 0.250 4
k-means++ 0.05s 29825 0.321 0.847 0.466 0.338 0.306 6
k-means++ 0.07s 23131 0.411 0.836 0.551 0.430 0.393 8
k-means++ 0.09s 20566 0.636 0.817 0.715 0.788 0.621 10
k-means++ 0.09s 18695 0.534 0.794 0.638 0.568 0.513 12
k-means++ 0.11s 16805 0.773 0.852 0.810 0.916 0.760 14
k-means++ 0.11s 15297 0.822 0.775 0.798 0.811 0.761 16
有人可以帮我解释一下吗?
我知道有一个低inertia
和高homogeneity
得分是好的,但我不知道这些的好门槛是多少。
例如,15297是我收到的最低inertia
,但是当K-clusters设置为16时会发生这种情况。这是好还是坏?
homo
=同质性得分;
compl
=完整性得分;
v_meas
= v-measure得分;
ARI
=调整兰德得分;
AMI
=调整了相互信息。
答案 0 :(得分:2)
你拥有的质心越多,你的惯性就越低。
拥有更多质心(num_clusters = centroids
)意味着更多的方式将输入分类到一个中心,从而降低多维空间中的整体惯性大小。但是,拥有更多质心也意味着机器在每个max_iter
中达到定义数量n_init
的收敛可能会更复杂(默认情况下,max_iter
设置为300) 。因此,你应该理解,对于每个质心的随机初始化(n_init
的每个开始),你的机器最多计算 KMeans 算法300次,试图达到一个状态,其中没有重新分类输入是可能的。当然,如果它更早达到收敛,那么它会进入下一个n_init
。同样,如果您的机器没有找到定义迭代次数的解决方案(在您的情况下为300),那么它仍会使用另一个随机放置的质心进行下一步。在10次初始化之后,采用惯性方面的最佳输出。 您可以尝试增加max_iter
和num_clusters
,以确定找到解决方案需要更长的时间。
由于存在不同的数据集,因此homo
和inertia
没有通用阈值。质心的数量应根据经验选择,从数据结构和这些输入应具有的聚类数量来判断。
compl
是完整性度量标准,如果给定类的所有输入都分配给同一个集群,则达到其上限(1.0)。鉴于其间隔为[0.0,1.0],您可以将其解释为一个比例。 homo
是同质性度量,其间隔等于compl
。如果每个集群包含单个类的输入,则它达到1.0。 v_meas
只是这两个指标的调和平均值。
有关完整性得分和同质性度量的更多一般信息是here。
此外,您应该考虑使用PCA缩小尺寸大小,因为在大部分多维数据上执行 KMeans 可能会产生不太令人满意的结果。