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()
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()
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!