Metode Siku K-Means dan Analisis Silhouette dengan Yellowbrick dan Scikit-Learn PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Metode Siku K-Means dan Analisis Silhouette dengan Yellowbrick dan Scikit-Learn

Pengantar

K-Means adalah salah satu algoritma clustering yang paling populer. Dengan memiliki titik pusat ke sebuah cluster, itu mengelompokkan titik-titik lain berdasarkan jarak mereka ke titik pusat itu.

Kelemahan dari K-Means adalah harus memilih jumlah cluster, K, sebelum menjalankan algoritme yang mengelompokkan poin.

Jika Anda ingin membaca panduan mendalam tentang K-Means Clustering, lihat โ€œK-Means Clustering dengan Scikit-Learnโ€.

Metode Siku dan Analisis Siluet

Teknik yang paling umum digunakan untuk memilih jumlah Ks adalah Metode Siku dan Analisis Siluet.

Untuk memudahkan pemilihan Ks, bata kuning library membungkus kode dengan for loop dan plot yang biasanya kita tulis menjadi 4 baris kode.

Untuk menginstal Yellowbrick langsung dari notebook Jupyter, jalankan:

! pip install yellowbrick

Mari kita lihat cara kerjanya untuk kumpulan data yang sudah dikenal yang sudah menjadi bagian dari Scikit-learn, the Selaput pelangi Himpunan data.

Langkah pertama adalah mengimpor dataset, KMeans dan yellowbrick perpustakaan, dan memuat data:

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from yellowbrick.cluster import KElbowVisualizer, SilhouetteVisualizer

iris = load_iris()

Perhatikan di sini, kami mengimpor KElbowVisualizer dan SilhouetteVisualizer dari yellowbrick.cluster, itulah modul yang akan kita gunakan untuk memvisualisasikan hasil Siku dan Siluet!

Setelah memuat dataset, di data key of the bunch (tipe data yang merupakan perpanjangan dari kamus) adalah nilai dari titik yang ingin kita cluster. Jika Anda ingin tahu apa yang diwakili oleh angka-angka itu, lihatlah iris['feature_names'].

Diketahui bahwa dataset Iris berisi tiga jenis iris: 'versicolor', 'virginica' dan 'setosa'. Anda juga dapat memeriksa kelas di iris['target_names'] untuk memverifikasi.

Jadi, kita memiliki 4 fitur untuk cluster dan mereka harus dipisahkan dalam 3 cluster yang berbeda sesuai dengan apa yang sudah kita ketahui. Mari kita lihat apakah hasil kami dengan Metode Elbow dan Analisis Silhouette akan menguatkan hal itu.

Pertama, kita akan memilih nilai fitur:

print(iris['feature_names']) 
print(iris['target_names']) 

X = iris['data']

Kemudian, kita dapat membuat KMeans model, sebuah KElbowVisualizer() contoh yang akan menerima model itu bersama dengan jumlah ks yang metriknya akan dihitung, dalam hal ini dari 2 untuk 11 Ks.

Setelah itu, kami menyesuaikan visualizer dengan data menggunakan fit() dan tampilkan plotnya dengan show(). Jika metrik tidak ditentukan, visualizer menggunakan distorsi metrik, yang menghitung jumlah jarak kuadrat dari setiap titik ke pusat yang ditetapkan:

model = KMeans(random_state=42)

elb_visualizer = KElbowVisualizer(model, k=(2,11))
elb_visualizer.fit(X)    
elb_visualizer.show()  

Sekarang, kita sudah memiliki Skor Distorsi Siku untuk KMeans Clustering plot dengan tanda garis vertikal yang akan menjadi jumlah ks terbaik, dalam hal ini, 4.

Tampaknya Metode Siku dengan metrik distorsi bukanlah pilihan terbaik jika kita tidak mengetahui jumlah cluster yang sebenarnya. Akankah Silhouette juga menunjukkan bahwa ada 4 cluster? Untuk menjawabnya, kita hanya perlu mengulang kode terakhir dengan model dengan 4 cluster dan objek visualizer yang berbeda:

model_4clust = KMeans(n_clusters = 4, random_state=42)

sil_visualizer = SilhouetteVisualizer(model_4clust)
sil_visualizer.fit(X)    
sil_visualizer.show()

skor siluet untuk k berarti cluster menggunakan metode siku

Kode menampilkan Silhouette Plot KMeans Clustering untuk 150 Sampel di 4 Pusat. Untuk menganalisis cluster ini, kita perlu melihat nilai koefisien siluet (atau skor), nilai terbaiknya lebih dekat ke 1. Nilai rata-rata yang kita miliki adalah 0.5, ditandai dengan garis vertikal, dan tidak begitu baik.

Kita juga perlu melihat distribusi antar cluster โ€“ plot yang baik memiliki ukuran area cluster yang sama atau titik yang terdistribusi dengan baik. Dalam grafik ini, ada 3 cluster yang lebih kecil (nomor 3, 2, 1) dan satu cluster yang lebih besar (nomor 0), yang bukan hasil yang kami harapkan.

Lihat panduan praktis dan praktis kami untuk mempelajari Git, dengan praktik terbaik, standar yang diterima industri, dan termasuk lembar contekan. Hentikan perintah Googling Git dan sebenarnya belajar itu!

Mari kita ulangi plot yang sama untuk 3 cluster untuk melihat apa yang terjadi:

model_3clust = KMeans(n_clusters = 3, random_state=42)

sil_visualizer = SilhouetteVisualizer(model_3clust)
sil_visualizer.fit(X)    
sil_visualizer.show()

siluet untuk kluster kmeans

Dengan mengubah jumlah cluster, skor siluet didapat 0.05 lebih tinggi dan cluster lebih seimbang. Jika kami tidak mengetahui jumlah cluster yang sebenarnya, dengan bereksperimen dan menggabungkan kedua teknik, kami akan memilih 3 alih-alih 2 sebagai jumlah Ks.

Ini adalah contoh bagaimana menggabungkan dan membandingkan metrik yang berbeda, memvisualisasikan data, dan bereksperimen dengan nilai cluster yang berbeda penting untuk mengarahkan hasil ke arah yang benar. Dan juga, bagaimana memiliki perpustakaan yang memfasilitasi analisis itu dapat membantu dalam proses itu!

Stempel Waktu:

Lebih dari penyalahgunaan