K-Means Elbow Method ja Silhouette Analysis Yellowbrickin ja Scikit-Learn PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

K-Meansin kyynärpäämenetelmä ja siluettianalyysi Yellowbrickilla ja Scikit-Learnilla

esittely

K-Means on yksi suosituimmista klusterointialgoritmeista. Kun klusterin keskipisteitä on, se ryhmittelee muut pisteet niiden etäisyyden mukaan kyseiseen keskipisteeseen.

K-Meansin haittapuoli on valita klusterien lukumäärä, K, ennen kuin suoritat pisteet ryhmittelevän algoritmin.

Jos haluat lukea perusteellisen oppaan K-Means Clusteringista, katso "K-Means Clustering with Scikit-Learn".

Kyynärpäämenetelmä ja siluettianalyysi

Yleisimmin käytetyt tekniikat Ks:n määrän valitsemiseen ovat Kyynärpää menetelmä ja Siluetti-analyysi.

Ks:n valinnan helpottamiseksi Keltainen tiili kirjasto päättelee koodin for-silmukoilla ja kaaviolla, jonka yleensä kirjoitamme 4 koodiriville.

Asenna Yellowbrick suoraan Jupyter-muistikirjasta suorittamalla:

! pip install yellowbrick

Katsotaanpa, kuinka se toimii tutussa tietojoukossa, joka on jo osa Scikit-learniä Iiris aineisto.

Ensimmäinen vaihe on tuoda tietojoukko, KMeans ja yellowbrick kirjastot ja lataa tiedot:

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

iris = load_iris()

Huomaa tässä, tuomme maahan KElbowVisualizer ja SilhouetteVisualizer alkaen yellowbrick.cluster, käytämme näitä moduuleja kyynärpään ja siluetin tulosten visualisointiin!

Tietojoukon lataamisen jälkeen data joukon avain (tietotyyppi, joka on sanakirjan laajennus) ovat klusteroitavien pisteiden arvot. Jos haluat tietää, mitä numerot edustavat, katso iris['feature_names'].

Tiedetään, että Iris-tietojoukossa on kolmen tyyppisiä iiriksiä: "versicolor", "virginica" ja "setosa". Voit myös tutustua luokkiin iris['target_names'] varmistaa.

Meillä on siis 4 klusteroitavaa ominaisuutta, ja ne tulisi jakaa kolmeen eri klusteriin sen mukaan, mitä jo tiedämme. Katsotaanpa, vahvistavatko tulokset kyynärpäämenetelmällä ja siluettianalyysillä sen.

Ensin valitsemme ominaisuuden arvot:

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

X = iris['data']

Sitten voimme luoda a KMeans malli, a KElbowVisualizer() esimerkki, joka vastaanottaa kyseisen mallin sekä ks:n määrän, jolle mittari lasketaan, tässä tapauksessa alkaen 2 ja 11 Ks.

Sen jälkeen sovitamme visualisaattorin datan avulla fit() ja näytä juoni kanssa show(). Jos mittaria ei ole määritetty, visualisoija käyttää vääristymä metriikka, joka laskee etäisyyksien neliösumman kustakin pisteestä sille määrättyyn keskustaan:

model = KMeans(random_state=42)

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

Nyt meillä on jo a Vääristymispisteen kyynärpää KMeans-klusterointiin piirtää pystyviivamerkinnän, joka olisi tässä tapauksessa paras ks-luku, 4.

Vaikuttaa siltä, ​​että vääristymämittarilla varustettu kyynärpäämenetelmä ei ollut paras valinta, jos emme tienneet klusterien todellista määrää. Ilmoittaako Silhouette myös, että klustereita on 4? Vastataksemme tähän, meidän on vain toistettava viimeinen koodi mallilla, jossa on 4 klusteria ja erilainen visualisointiobjekti:

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

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

siluettipisteet k:lle tarkoittaa klusteria kyynärpäämenetelmällä

Koodi näyttää a KMeans-klusteroinnin siluettikaavio 150 näytteelle 4 keskuksessa. Näiden klustereiden analysoimiseksi meidän on tarkasteltava siluettikertoimen (tai pistemäärän) arvoa, sen paras arvo on lähempänä yhtä. Keskimääräinen arvomme on 0.5, merkitty pystyviivalla, eikä niin hyvä.

Meidän on myös tarkasteltava klustereiden välistä jakautumista – hyvällä tontilla on samankokoisia klusteroituja alueita tai hyvin jakautuneita pisteitä. Tässä kaaviossa on 3 pienempää klusteria (numerot 3, 2, 1) ja yksi suurempi klusteri (numero 0), mikä ei ole odotettu tulos.

Tutustu käytännönläheiseen, käytännölliseen Gitin oppimisoppaaseemme, jossa on parhaat käytännöt, alan hyväksymät standardit ja mukana tuleva huijauslehti. Lopeta Git-komentojen googlailu ja oikeastaan oppia se!

Toistetaan sama kaavio 3 klusterille nähdäksesi mitä tapahtuu:

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

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

siluetti kmeans-klustereille

Klusterien lukumäärää muuttamalla saatiin siluettipisteet 0.05 korkeampi ja klusterit ovat tasapainoisempia. Jos emme olisi tienneet klustereiden todellista määrää, olisimme valinneet kokeilemalla ja yhdistämällä molempia tekniikoita 3 sijasta 2 Ks-lukuna.

Tämä on esimerkki siitä, kuinka eri mittareiden yhdistäminen ja vertailu, datan visualisointi ja erilaisten klusteriarvojen kokeileminen ovat tärkeitä tulosten ohjaamiseksi oikeaan suuntaan. Ja myös, kuinka kirjasto, joka helpottaa tätä analysointia, voi auttaa tässä prosessissa!

Aikaleima:

Lisää aiheesta Stackabus