K-means 性能
Posted
技术标签:
【中文标题】K-means 性能【英文标题】:K-means performance 【发布时间】:2021-01-27 19:05:56 【问题描述】:我有一个大型数据集,每个样本都有一个从 0 到 8 的特定类号。我使用了 sklearn python 包中的 K-means 算法。当我多次运行代码时,K-means 的输出是不同的。例如,第 246 个样本在第一次运行中属于集群 3,在第二次运行中属于集群 0。我还附上了一张图片供您参考。
我认为这是因为集群中心的随机初始化,但我需要在多次运行中获得恒定的结果。我该如何解决?
【问题讨论】:
你确定cluster_number 3和0不一样吗?kmeans.cluster_centers_
绝对是一样的。但我想通过比较正确的集群 ID 和 k-means 集群 ID 来计算 k-means 性能,因此我需要为我的其余代码提供一个稳定的结果。
好吧,它们永远不会或只是偶然,因为算法从随机放置质心开始,然后优化它们的位置。
【参考方案1】:
簇的个数不是真实的数据,它是一个随机数来区分一个簇。 那就不是稳定数字了。
要知道类的真实类型,需要将已知的类和助记符关联起来。
您的样本:
1 : 246 是 #3
2 : 246 是 #0
您需要为 [246] 命名
【讨论】:
是的,我在帖子中也提到了你的观点。但是我需要通过每个样本的正确标签来计算 k-means 的性能,并且我需要一个稳定的结果。您知道如何通过为每个样本设置正确的类 ID 来计算 k-means 性能吗? 其实无论是哪个标签,只要0和3对应的id在两次运行中都相同即可。衡量性能是另一个问题,因为它是无人监督的,所以要棘手得多。你可以检查 silhoutte 分数。但在现实生活中,主要是基于您的业务。dzone.com/articles/…. 稳定的结果是分类和助记符。您的问题是如何获取类的名称(类型)。它可能会将从当前拟合中获取的数字与已知样本相关联。是分类与教学相结合 关联:您的样本:246 是#3 246 是#0。 - 是你的答案以上是关于K-means 性能的主要内容,如果未能解决你的问题,请参考以下文章