Metoda K-Means Elbow in analiza silhuet z Yellowbrick in Scikit-Learn PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Metoda komolcev K-Means in analiza silhuet z Yellowbrick in Scikit-Learn

Predstavitev

K-Means je eden najbolj priljubljenih algoritmov za združevanje v gruče. Če ima središčne točke do gruče, združuje druge točke glede na njihovo razdaljo do te središčne točke.

Slaba stran K-Means je, da je treba izbrati število grozdov, K, preden zaženete algoritem, ki združuje točke.

Če želite prebrati poglobljen vodnik za združevanje v gruče K-Means, si oglejte »K-Means Clustering with Scikit-Learn«.

Metoda komolca in analiza silhuet

Najpogosteje uporabljene tehnike za izbiro števila K so Metoda komolca in Analiza silhuet.

Da bi olajšali izbiro Ks, je Rumena opeka knjižnica ovije kodo z zankami for in risbo, ki bi jo običajno zapisali v 4 vrstice kode.

Če želite Yellowbrick namestiti neposredno iz prenosnika Jupyter, zaženite:

! pip install yellowbrick

Poglejmo, kako deluje za znani nabor podatkov, ki je že del Scikit-learn, the Iris nabor podatkov.

Prvi korak je uvoz nabora podatkov, KMeans in yellowbrick knjižnice in naložite podatke:

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

iris = load_iris()

Upoštevajte, da uvažamo KElbowVisualizer in SilhouetteVisualizer iz yellowbrick.cluster, to so moduli, ki jih bomo uporabili za vizualizacijo rezultatov Elbow in Silhouette!

Po nalaganju nabora podatkov v data ključ skupine (podatkovni tip, ki je razširitev slovarja) so vrednosti točk, ki jih želimo združiti v gruče. Če želite vedeti, kaj predstavljajo številke, si oglejte iris['feature_names'].

Znano je, da zbirka podatkov Iris vsebuje tri vrste perunik: 'versicolor', 'virginica' in 'setosa'. Razrede si lahko ogledate tudi v iris['target_names'] potrditi.

Torej imamo 4 funkcije za združevanje in jih je treba ločiti v 3 različne skupine glede na to, kar že vemo. Poglejmo, ali bodo naši rezultati z metodo komolca in analizo silhuet to potrdili.

Najprej bomo izbrali vrednosti lastnosti:

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

X = iris['data']

Nato lahko ustvarimo a KMeans modela za KElbowVisualizer() primerek, ki bo prejel ta model skupaj s številom ks, za katere bo izračunana metrika, v tem primeru iz 2 da 11 Ks.

Nato prilagodimo vizualizator s podatki fit() in prikaže ploskev z show(). Če metrika ni podana, vizualizator uporabi popačenje metrika, ki izračuna vsoto kvadratov razdalj od vsake točke do njenega dodeljenega središča:

model = KMeans(random_state=42)

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

Zdaj že imamo a Distortion Score Elbow za KMeans Clustering ploskev z navpično črtno oznako, ki bi bilo najboljše število ks, v tem primeru, 4.

Zdi se, da metoda Elbow z metriko popačenja ni bila najboljša izbira, če nismo poznali dejanskega števila grozdov. Ali bo Silhueta nakazovala tudi, da obstajajo 4 grozdi? Da odgovorimo na to, moramo samo ponoviti zadnjo kodo z modelom s 4 gručami in drugim objektom vizualizatorja:

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

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

rezultat silhuete za k pomeni skupino z uporabo metode komolca

Koda prikaže a Graf silhuete združevanja v gruče KMeans za 150 vzorcev v 4 centrih. Za analizo teh skupin si moramo ogledati vrednost koeficienta silhuete (ali rezultata), njegova najboljša vrednost je bližje 1. Povprečna vrednost, ki jo imamo, je 0.5, označeno z navpično črto, in ni tako dobro.

Pogledati moramo tudi porazdelitev med grozdi – dobra ploskev ima podobne velikosti gručenih območij ali dobro porazdeljene točke. Na tem grafu so 3 manjše skupine (številka 3, 2, 1) in ena večja skupina (številka 0), kar ni rezultat, ki smo ga pričakovali.

Oglejte si naš praktični, praktični vodnik za učenje Gita z najboljšimi praksami, standardi, sprejetimi v panogi, in priloženo goljufijo. Nehajte Googlati ukaze Git in pravzaprav naučiti it!

Ponovimo isti prikaz za 3 gruče, da vidimo, kaj se zgodi:

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

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

silhueta za grozde kmeans

S spreminjanjem števila grozdov smo dobili rezultat silhuete 0.05 višji in grozdi so bolj uravnoteženi. Če ne bi poznali dejanskega števila grozdov, bi z eksperimentiranjem in kombiniranjem obeh tehnik izbrali 3 Namesto 2 kot število Ks.

To je primer, kako je združevanje in primerjanje različnih meritev, vizualizacija podatkov in eksperimentiranje z različnimi vrednostmi grozdov pomembno za vodenje rezultata v pravo smer. In tudi, kako lahko knjižnica, ki omogoča to analizo, pomaga pri tem procesu!

Časovni žig:

Več od Stackabuse