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?
clustering
python
k-means
scikit-learn
metric
Zadraśnięcie
źródło
źródło
python
.Odpowiedzi:
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ęcja=∑ja( d( i , c r ) ) gdzie c r jest środkiem ciężkości przypisanego skupienia i re to kwadrat do odległości.
Teraz formuła statystyki luki obejmuje
Wprowadzając+ c , - c 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 do jest 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:
źródło