scikit学习中的聚类惯性公式


9

我想使用pandas和scikit learning在python中编码kmeans集群。为了选择好的k,我想对Tibshirani和al 2001(pdf)中的Gap Statistic进行编码。

我想知道是否可以使用scikit的惯性_结果并调整间隙统计公式,而不必重新编码所有距离计算。

有谁知道scikit中使用的惯性公式/是否知道使用高级距离函数重新编码间隙统计信息的简便方法?


我认为这个问题具有足够的统计内容,足以应对CV的问题,但请注意,它也需要相当复杂的编程和Python知识。可能很难得到一个好的答案。您可能也想/愿意解决伪代码,和/或您可能需要将此问题分为2部分,其中1部分涉及统计方面,1部分涉及Stack Overflow中有关Python编程方面的问题。(或者也许不是,我不确定,但我只是想给您个警告;我们会看看情况如何。)
gung-恢复莫妮卡

1
这个问题需要定义术语“惯性”。它看起来像是在内部创造的python
ttnphns

Answers:


6

我想我找到了kmeans聚类的答案:

通过查看git源代码,我发现对于scikit学习,惯性计算为每个点与其最接近的质心(即分配给它的簇)的平方距离之和。所以一世=一世d一世C[R 哪里 C[R 是分配簇的质心,并且 d 是平方距离。

现在,差距统计公式涉及

w ^ķ=[R=1个ķ1个2ñ[Rd[R
哪里 d[R 是集群中所有点之间的平方距离的总和 [R

通过介绍 +C-C 在平方距离公式中C 是簇的质心 [R 坐标),我有一个与惯性相对应的术语(如scikit)+一个术语,如果每个 C是每个星团的重心(应该在kmeans中)。所以我猜w ^ķ 实际上是scikit Inertia。

我还有两个问题:

  1. 您认为我的微积分是正确的吗?(例如,我不知道它是否适合分层集群。)
  2. 如果我在上面是正确的话,我已经对间隙统计量(由于估计和聚类之间的对数惯性之差进行编码)进行了编码,并且它的性能特别差,尤其是在虹膜数据集上,有人尝试过吗?

2
最好不要在答案中提出问题。如果这不是真正的回答你的问题,但只是部分解决了澄清,真正的问题,这将是更好的编辑你的问题和粘贴此信息。
呱-恢复莫妮卡

1
@Scratch您是否曾经获得间隙统计数据的python实现以用于Iris数据集?我在同一个问题上挣扎。
Zelazny7 2014年

是的,我是几个月前编码的。我该怎么寄给你?
从零开始2014年

1
不应该是这个公式
w ^ķ=[R=1个ķd[R2ñ[R
Biswanath 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.