Formuła bezwładności grupowania w scikit learn

9

Chciałbym zakodować klastry kmeans w pythonie przy użyciu pand i scikit learning. Aby wybrać dobre k, chciałbym zakodować statystykę luk z Tibshirani i in. 2001 ( pdf ).

Chciałbym wiedzieć, czy mogę użyć wyniku bezwładności scikit i dostosować formułę statystyki szczeliny bez konieczności przekodowywania wszystkich obliczeń odległości.

Czy ktoś zna formułę bezwładności stosowaną w scikit / zna prosty sposób na przekodowanie statystyki luki za pomocą funkcji odległości wysokiego poziomu?

Zadraśnięcie
źródło
Myślę, że to pytanie ma wystarczającą treść statystyczną, aby być na temat CV, ale zauważ, że wymaga ono również dość wyrafinowanej wiedzy programistycznej i Python. Dobra odpowiedź może być trudna. Możesz także poprosić o / pseudokod , ale możesz też podzielić to pytanie na 2 części, 1 o aspektach statystycznych i 1 o Przepełnieniu stosu o aspektach programowania w języku Python. (A może nie, nie wiem na pewno, ale chcę tylko dać ci uczciwe ostrzeżenie; zobaczymy, jak to pójdzie.)
Gung - Przywróć Monikę
1
To pytanie wymaga zdefiniowania terminu „bezwładność”. Wygląda na to, że jest w nim ukuty python.
ttnphns,

Odpowiedzi:

6

Wydaje mi się, że znalazłem odpowiedź na grupowanie kmeanów:

Patrząc na kod źródłowy git, odkryłem, że w przypadku nauki scikit, bezwładność jest obliczana jako suma kwadratowej odległości dla każdego punktu do jego najbliższego środka ciężkości, tj. Przypisanego do niego gromady. WięcI=i(d(i,cr)) gdzie dor jest środkiem ciężkości przypisanego skupienia i re to kwadrat do odległości.

Teraz formuła statystyki luki obejmuje

W.k=r=1k1(2)nr)rer
gdzie rer to suma kwadratowych odległości między wszystkimi punktami w klastrze r.

Wprowadzając +do, -do we wzorze kwadratu odległości (do będąc centroidem gromady r współrzędne), mam termin, który odpowiada bezwładności (jak w scikit) + termin, który znika, jeśli każdy dojest centrum każdego skupiska (które ma być w kmeans). ZgadujęW.k jest w rzeczywistości scikit bezwładności.

Mam jeszcze dwa pytania:

  1. Czy uważasz, że mój rachunek jest prawidłowy? (Na przykład nie wiem, czy to dotyczy klastrowania hierarchicznego).
  2. Jeśli mam rację powyżej, zakodowałem statystyki luki (jako różnicę bezwładności logarytmicznej między szacowaniem a grupowaniem) i działa ona źle, szczególnie w zestawie danych tęczówki, czy ktoś to wypróbował?
Zadraśnięcie
źródło
2
Najlepiej nie zadawać pytań w odpowiedziach. Jeśli to nie jest tak naprawdę odpowiedź na twoje pytanie, ale tylko częściowe rozwiązanie, aby wyjaśnić prawdziwe pytanie, lepiej byłoby edytować swoje pytanie i wkleić te informacje.
Gung - Przywróć Monikę
1
@Scratch, czy kiedykolwiek dostałeś implementację statystyki luk w Pythonie do pracy na zbiorze danych Iris? Walczę z tym samym problemem.
Zelazny7
Tak, kodowałem jeden kilka miesięcy temu. Jak mogę ci to wysłać?
Zdrap
1
Formuła nie powinna być taka
W.k=r=1krer(2)nr)
?
Biswanath,