Saya ingin kode kmeans pengelompokan dalam python menggunakan panda dan scikit belajar. Untuk memilih k yang baik, saya ingin mengkodekan Statistik Gap dari Tibshirani dan al 2001 ( pdf ).
Saya ingin tahu apakah saya dapat menggunakan hasil inersia_ dari scikit dan mengadaptasi formula statistik gap tanpa harus mengkode ulang semua perhitungan jarak.
Adakah yang tahu rumus inersia yang digunakan dalam scikit / tahu cara mudah untuk mengode ulang statistik gap menggunakan fungsi jarak level tinggi?
clustering
python
k-means
scikit-learn
metric
Menggaruk
sumber
sumber
python
.Jawaban:
Saya kira saya menemukan jawaban saya untuk pengelompokan kmeans:
Dengan melihat kode sumber git, saya menemukan bahwa untuk scikit belajar, inersia dihitung sebagai jumlah jarak kuadrat untuk setiap titik ke pusat massa terdekat, yaitu, cluster yang ditugaskan. Jadi mana c r adalah centroid dari cluster yang ditugaskan dan d adalah jarak kuadrat.I=∑i(d(i,cr)) cr d
Sekarang formula gap statistic melibatkan manaDradalah jumlah dari jarak kuadrat antara semua titik dalam klasterr.
Dengan memperkenalkan , - c dalam rumus jarak kuadrat ( c menjadi pusat koordinat cluster r ), saya memiliki istilah yang sesuai dengan Inersia (seperti dalam scikit) + istilah yang hilang jika setiap c adalah barycentre dari setiap cluster (yang seharusnya dalam kmeans). Jadi saya kira W k sebenarnya scikit Inersia.+ c - c c r c Wk
Saya masih punya dua pertanyaan:
sumber