K-Meansi küünarnuki meetod ja siluettanalüüs Yellowbricki ja Scikit-Learni PlatoBlockchaini andmete intelligentsusega. Vertikaalne otsing. Ai.

K-Meansi küünarnuki meetod ja silueti analüüs Yellowbricki ja Scikit-Learniga

Sissejuhatus

K-Means on üks populaarsemaid klasterdamisalgoritme. Kui klastris on keskpunktid, rühmitab see teised punktid nende kauguse põhjal selle keskpunktiga.

K-Meansi negatiivne külg on klastrite arvu valimine, K, enne punkte rühmitava algoritmi käivitamist.

Kui soovite lugeda põhjalikku K-Meansi rühmitamise juhendit, vaadake "K-Meansi rühmitamine Scikit-Learniga".

Küünarnuki meetod ja silueti analüüs

K-de arvu valimisel on kõige sagedamini kasutatavad tehnikad Küünarnuki meetod ja Silueti analüüs.

Ks-i valiku hõlbustamiseks Kollane telliskivi teek lõpetab koodi for-silmustega ja joonisega, mille me tavaliselt kirjutaksime 4 koodireale.

Yellowbricki installimiseks otse Jupyteri sülearvutist käivitage:

! pip install yellowbrick

Vaatame, kuidas see toimib tuttava andmekogumi puhul, mis on juba Scikit-learni osa Iiris andmestik.

Esimene samm on andmestiku importimine, KMeans ja yellowbrick teegid ja laadige andmed:

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

iris = load_iris()

Pange tähele, et impordime KElbowVisualizer ja SilhouetteVisualizer Alates yellowbrick.cluster, neid mooduleid kasutame küünarnuki ja silueti tulemuste visualiseerimiseks!

Pärast andmestiku laadimist avatakse data hunniku võti (andmetüüp, mis on sõnastiku laiendus) on punktide väärtused, mida tahame rühmitada. Kui soovite teada, mida numbrid tähistavad, vaadake iris['feature_names'].

On teada, et Irise andmestik sisaldab kolme tüüpi iiriseid: "versicolor", "virginica" ja "setosa". Samuti saate tutvuda klassidega iris['target_names'] kontrollida.

Seega on meil rühmitamiseks 4 funktsiooni ja need tuleks eraldada kolmeks erinevaks klastriks vastavalt sellele, mida me juba teame. Vaatame, kas küünarnuki meetodi ja siluettanalüüsi tulemused kinnitavad seda.

Esiteks valime funktsiooni väärtused:

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

X = iris['data']

Seejärel saame luua a KMeans mudel, a KElbowVisualizer() eksemplar, mis saab selle mudeli koos ks arvuga, mille jaoks mõõdik arvutatakse, antud juhul alates 2 et 11 Ks.

Pärast seda sobitame visualiseerija kasutatavate andmetega fit() ja kuvage süžee koos show(). Kui mõõdikut pole määratud, kasutab visualiseerija moonutus meetermõõdustik, mis arvutab iga punkti ja sellele määratud keskpunkti kauguste ruudu summa:

model = KMeans(random_state=42)

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

Nüüd on meil juba a KMeansi rühmitamise moonutusskoori küünarnukk graafik vertikaalse joonega, mis oleks antud juhul parim arv ks, 4.

Näib, et moonutusmõõdikuga küünarnuki meetod ei olnud parim valik, kui me ei teadnud klastrite tegelikku arvu. Kas Siluett näitab ka, et on 4 klastrit? Sellele vastamiseks peame lihtsalt kordama viimast koodi 4 klastri ja erineva visualiseerimisobjektiga mudeliga:

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

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

k silueti skoor tähendab klastrit küünarnuki meetodil

Kood kuvab a KMeansi klastri siluettdiagramm 150 proovi jaoks 4 keskuses. Selle klastrite analüüsimiseks peame vaatama silueti koefitsiendi (või skoori) väärtust, selle parim väärtus on lähemal 1-le. Meie keskmine väärtus on 0.5, mida tähistab vertikaalne joon, ja mitte nii hea.

Peame vaatama ka jaotust klastrite vahel – heal krundil on sarnase suurusega koondunud alad või hästi jaotatud punktid. Sellel graafikul on 3 väiksemat klastrit (number 3, 2, 1) ja üks suurem klastrit (number 0), mis ei ole tulemus, mida me ootasime.

Tutvuge meie praktilise ja praktilise Giti õppimise juhendiga, mis sisaldab parimaid tavasid, tööstusharus aktsepteeritud standardeid ja kaasas olevat petulehte. Lõpetage Giti käskude guugeldamine ja tegelikult õppima seda!

Kordame sama graafikut 3 klastri jaoks, et näha, mis juhtub:

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

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

siluett kmeansi klastrite jaoks

Klastrite arvu muutmisega sai silueti skoor 0.05 kõrgem ja klastrid on tasakaalustatumad. Kui me poleks teadnud klastrite tegelikku arvu, oleksime mõlemat tehnikat katsetades ja kombineerides valinud 3 asemel 2 kui Ks.

See on näide sellest, kuidas erinevate mõõdikute kombineerimine ja võrdlemine, andmete visualiseerimine ja erinevate klastrite väärtustega katsetamine on oluline, et tulemus oleks õiges suunas. Ja kuidas saab seda analüüsi hõlbustava raamatukogu olemasolu selles protsessis aidata!

Ajatempel:

Veel alates Stackabus