Clustering

scikit learn中的聚類慣性公式

  • December 2, 2013

我想使用 pandas 和 scikit learn 在 python 中編寫一個 kmeans 聚類。為了選擇好的 k,我想對 Tibshirani 和 al 2001 ( pdf ) 的 Gap Statistic 進行編碼。

我想知道我是否可以使用scikit 的慣性結果並調整間隙統計公式,而無需重新編碼所有距離計算。

有誰知道 scikit 中使用的慣性公式/知道使用高級距離函數重新編碼間隙統計的簡單方法?

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

通過查看 git 源代碼,我發現對於 scikit learn,慣性計算為每個點到其最近的質心(即其分配的集群)的距離平方和。所以在哪裡是分配集群的質心,並且是平方距離。

現在差距統計的公式涉及

在哪裡是簇中所有點之間的平方距離之和. 通過介紹,在平方距離公式中(是集群的質心坐標),我有一個對應於慣性的術語(如在 scikit 中)+一個術語,如果每個是每個簇的重心(應該是 kmeans)。所以我猜實際上是 scikit Inertia。

我還有兩個問題:

  1. 你認為我的微積分是正確的嗎?(例如,我不知道它是否適用於層次聚類。)
  2. 如果我在上面是正確的,我已經編碼了差距統計(作為估計和聚類之間的對數慣性的差異)並且它表現得很糟糕,特別是在 iris 數據集上,有人試過嗎?

引用自:https://stats.stackexchange.com/questions/78313

comments powered by Disqus