use*_*878 -1 cluster-analysis k-means unsupervised-learning scikit-learn
我有 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
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解释一下吗?
我知道有低分inertia
和高分都很好homogeneity
,但我不知道这些的好门槛是多少。
例如,15297 是inertia
我收到的最低值,但是当 K 簇设置为 16 时会发生这种情况。这是好是坏?
homo
= 同质性得分;
compl
= 完整性得分;
v_meas
= v-测量分数;
ARI
= 调整后的兰德分数;
AMI
= 调整后的相互信息。
质心越多,惯性就越低。拥有更多的质心 ( 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
只是这两个指标的调和平均值。
有关完整性评分和同质性度量的更多一般信息请参见此处。
此外,您应该考虑使用PCA减小维度大小,因为对大量多维数据执行KMeans可能会得到不太令人满意的结果。
归档时间: |
|
查看次数: |
1962 次 |
最近记录: |