scikit Learnの慣性公式のクラスタリング


9

パンダとscikit学習を使用して、Pythonでkmeansクラスタリングをコーディングしたいと思います。良いkを選択するために、Tibshirani and al 2001(pdf)からのギャップ統計をコード化したいと思います。

すべての距離計算を再コーディングする必要なしに、scikitの惰性結果を使用してギャップ統計式を適応できるかどうか知りたいのですが。

高レベル距離関数を使用してギャップ統計を再コーディングする簡単な方法をscikitで使用されている慣性公式を知っている人はいますか?


この質問には、CVの主題となる十分な統計的内容があると思いますが、かなり高度なプログラミングとPythonの知識も必要です。良い答えを得るのは難しいかもしれません。同様に、疑似コードを求める/進んで解決することもできます。また、この質問を2つの部分に分割する必要がある場合もあります。1つは統計的側面に関するもの、もう 1つはPythonプログラミング側面に関するスタックオーバーフローに関する部分です。(あるいはそうでないかもしれない、私は確かに知らないが、私はちょうどあなたに公正な警告を与えたい、我々はそれが行く方法を説明します。)
GUNG -復活モニカ

1
この質問では、「慣性」という用語を定義する必要があります。内で造られたように見えますpython
ttnphns 2013

回答:


6

私はkmeansクラスタリングに対する私の答えを見つけたと思います:

gitソースコードを調べたところ、scikit学習では、各ポイントの最も近い重心、つまり割り当てられたクラスターまでの距離の2乗の合計として慣性が計算されることがわかりました。したがって、ここで、は割り当てられたクラスターの重心であり、は距離の2乗です。 I=i(d(i,cr))crd

ここで、ギャップ統計の式には がれます。ここで、はクラスターすべてのポイント間の距離の2乗の合計です。

Wk=r=1k1(2nr)Dr
Drr

二乗距離の式に、導入することで(はクラスター座標の重心です)、慣性に対応する項(scikitのように)+各が各クラスターの重心である場合に消える項があります。 (それはkmeansであることになっています)。ですから、は実際には慣性だと思います。+cccrcWk

まだ2つの質問があります。

  1. 私の微積分は正しいと思いますか?(たとえば、それが階層的クラスタリングに当てはまるかどうかはわかりません。)
  2. 上記が正しい場合、ギャップ統計をコーディングしました(推定とクラスタリングの対数慣性の差として)。特に虹彩データセットでパフォーマンスが悪いのですが、誰か試してみましたか?

2
回答に質問を投げかけないことが最善です。これが本当の問題を明確にするために、本当にあなたの質問への答えが、ちょうど部分的な解決策ではない場合、それはあなたの質問を編集する方が良い&でこの情報を貼り付けます。
GUNG -復活モニカ

1
@Scratchギャップ統計のPython実装でIrisデータセットを処理したことはありますか?私は同じ問題で苦労しています。
Zelazny7 2014

はい、数か月前にコーディングしました。どうすればあなたにそれを送ることができますか?
スクラッチ

1
これは式ではありません?
Wk=r=1kDr(2nr)
ビスワナート2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.