Yellowbrick ve Scikit-Learn PlatoBlockchain Veri Zekası ile K-Means Dirsek Yöntemi ve Siluet Analizi. Dikey Arama. Ai.

K-Means Dirsek Metodu ve Yellowbrick ve Scikit-Learn ile Siluet Analizi

Giriş

K-Means, en popüler kümeleme algoritmalarından biridir. Bir kümeye merkezi noktalar ekleyerek, diğer noktaları o merkez noktaya olan uzaklıklarına göre gruplandırır.

K-Means'in bir dezavantajı, küme sayısını seçmek zorunda olmasıdır. K, noktaları gruplayan algoritmayı çalıştırmadan önce.

K-Means Clustering için ayrıntılı bir kılavuz okumak isterseniz, bir göz atın “Scikit-Learn ile K-Means Kümeleme”.

Dirsek Metodu ve Siluet Analizi

Ks sayısını seçmek için en yaygın kullanılan teknikler şunlardır: Dirsek Yöntemi ve Siluet Analizi.

Ks seçimini kolaylaştırmak için, sarı tuğla library, kodu for döngüleriyle ve genellikle 4 satır koda yazacağımız bir çizimle tamamlar.

Yellowbrick'i doğrudan bir Jupyter not defterinden yüklemek için şunu çalıştırın:

! pip install yellowbrick

Halihazırda Scikit-learn'in bir parçası olan tanıdık bir veri kümesi için nasıl çalıştığını görelim. İris Veri kümesi.

İlk adım, veri kümesini içe aktarmaktır, KMeans ve yellowbrick kütüphaneler ve verileri yükleyin:

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

iris = load_iris()

Burada dikkat edin, içe aktarıyoruz KElbowVisualizer ve SilhouetteVisualizer itibaren yellowbrick.cluster, Dirsek ve Siluet sonuçlarını görselleştirmek için kullanacağımız modüller bunlar!

Veri kümesini yükledikten sonra, data demetin anahtarı (bir sözlüğün uzantısı olan bir veri türü), kümelemek istediğimiz noktaların değerleridir. Rakamların neyi temsil ettiğini bilmek istiyorsanız, bir göz atın iris['feature_names'].

Iris veri setinin üç tip iris içerdiği bilinmektedir: 'versicolor', 'virginica' ve 'setosa'. Ayrıca sınıfları inceleyebilirsiniz. iris['target_names'] doğrulamak için.

Yani 4 tane özelliğimiz var ve bunları zaten bildiklerimize göre 3 farklı kümeye ayırmamız gerekiyor. Bakalım Dirsek Metodu ve Siluet Analizi ile elde ettiğimiz sonuçlar bunu doğrulayacak mı?

İlk olarak, özellik değerlerini seçeceğiz:

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

X = iris['data']

Sonra, bir oluşturabiliriz KMeans model, bir KElbowVisualizer() Bir metriğin hesaplanacağı ks sayısıyla birlikte bu modeli alacak olan örnek, bu durumda 2 için 11 KS.

Bundan sonra, görselleştiriciyi kullanarak verilerle eşleştiririz. fit() ve arsa ile göster show(). Bir metrik belirtilmemişse görselleştirici, çarpıtma her noktadan atanan merkeze olan uzaklıkların karelerinin toplamını hesaplayan metrik:

model = KMeans(random_state=42)

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

Şimdi, biz zaten bir KMeans Kümeleme için Bozulma Puanı Dirseği bu durumda en iyi ks sayısı olacak dikey bir çizgi işaretiyle çizin, 4.

Gerçek küme sayısını bilmiyorsak, bozulma metriği olan Dirsek Yöntemi en iyi seçim değildi. Silhouette ayrıca 4 küme olduğunu da gösterecek mi? Bunu cevaplamak için, sadece 4 kümeli bir model ve farklı bir görselleştirici nesne ile son kodu tekrarlamamız gerekiyor:

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

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

k için siluet puanı, dirsek yöntemi kullanılarak küme anlamına gelir

Kod, bir 150 Merkezde 4 Örnek için Kümeleme KMeans Siluet Grafiği. Bu kümeleri analiz etmek için siluet katsayısının (veya puanın) değerine bakmamız gerekir, en iyi değeri 1'e yakındır. 0.5, dikey çizgiyle işaretlenmiş ve çok iyi değil.

Ayrıca kümeler arasındaki dağılıma da bakmamız gerekir - iyi bir arsa benzer büyüklükte kümelenmiş alanlara veya iyi dağıtılmış noktalara sahiptir. Bu grafikte, beklediğimiz sonuç olmayan 3 küçük küme (3, 2, 1) ve bir büyük küme (0 sayısı) vardır.

En iyi uygulamalar, endüstri tarafından kabul edilen standartlar ve dahil edilen hile sayfası ile Git'i öğrenmek için uygulamalı, pratik kılavuzumuza göz atın. Googling Git komutlarını durdurun ve aslında öğrenmek o!

Ne olduğunu görmek için aynı grafiği 3 küme için tekrarlayalım:

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

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

kmeans kümeleri için siluet

Küme sayısı değiştirilerek siluet puanı elde edilmiştir. 0.05 daha yüksek ve kümeler daha dengeli. Her iki tekniği deneyerek ve birleştirerek gerçek küme sayısını bilmiyor olsaydık, 3 yerine 2 Ks sayısı olarak

Bu, farklı metrikleri birleştirmenin ve karşılaştırmanın, verileri görselleştirmenin ve farklı küme değerleriyle denemeler yapmanın sonucu doğru yöne götürmek için ne kadar önemli olduğuna bir örnektir. Ayrıca, bu analizi kolaylaştıran bir kütüphaneye sahip olmak bu süreçte nasıl yardımcı olabilir!

Zaman Damgası:

Den fazla Yığın kötüye kullanımı