logo

K tarkoittaa klusterointia – Johdanto

K-Means Clustering on Valvomaton koneoppiminen algoritmi, joka ryhmittelee merkitsemättömän tietojoukon eri klustereihin. Artikkelin tarkoituksena on tutkia k mean -klusteroinnin perusteita ja toimintaa toteutuksen ohella.

Sisällysluettelo

Mitä on K-keinoklusterointi?

Valvomaton koneoppiminen on prosessi, jossa tietokone opetetaan käyttämään merkitsemätöntä, luokittelematonta dataa ja sallitaan algoritmin toimia kyseisellä tiedolla ilman valvontaa. Ilman aiempaa datakoulutusta koneen tehtävänä on tässä tapauksessa järjestää lajittelematonta dataa rinnakkaisuuksien, kuvioiden ja muunnelmien mukaan.



K tarkoittaa klusterointia, määrittää datapisteitä yhdelle K-klusterista riippuen niiden etäisyydestä klusterien keskustasta. Se alkaa kohdistamalla satunnaisesti klusterien sentroidi avaruuteen. Sitten kukin datapiste määritetään yhdelle klusterista sen etäisyyden perusteella klusterin painopisteestä. Kun jokainen piste on osoitettu yhdelle klusterista, uudet klusterin sentroidit määritetään. Tämä prosessi suoritetaan iteratiivisesti, kunnes se löytää hyvän klusterin. Analyysissa oletetaan, että klusterin lukumäärä on annettu edistyneessä ja joudumme laittamaan pisteitä johonkin ryhmään.

Joissakin tapauksissa K ei ole selkeästi määritelty, ja meidän on pohdittava optimaalista K-määrää. K-keskiarvoklusterointi toimii parhaiten data on hyvin erotettu. Kun datapisteet ovat päällekkäin, tämä klusterointi ei sovellu. K Means on nopeampi verrattuna muihin klusterointitekniikoihin. Se tarjoaa vahvan yhteyden datapisteiden välillä. K Means -klusteri ei anna selkeää tietoa klusterien laadusta. Erilainen klusterin keskipisteen alkuperäinen määritys voi johtaa erilaisiin klustereihin. Lisäksi K Means -algoritmi on herkkä kohinalle. Se on ehkä juuttunut paikallisiin minimiin.

Mikä on k-means-klusteroinnin tavoite?

Tavoitteena klusterointi on jakaa väestö tai aseta tietopisteitä useisiin ryhmiin niin, että kunkin ryhmän tietopisteitä on enemmän vertailukelpoinen toisiinsa ja eroavat muiden ryhmien tietopisteistä. Se on pohjimmiltaan asioiden ryhmittely sen mukaan, kuinka samanlaisia ​​ja erilaisia ​​ne ovat keskenään.

Miten k-keskiarvoklusterointi toimii?

Saamme tietojoukon kohteita, joissa on tiettyjä ominaisuuksia, ja näiden ominaisuuksien arvot (kuten vektori). Tehtävänä on luokitella nämä kohteet ryhmiin. Tämän saavuttamiseksi käytämme K-means-algoritmia, valvomatonta oppimisalgoritmia. 'K' algoritmin nimessä edustaa ryhmien/klustereiden määrää, joihin haluamme luokitella kohteemme.

(Se auttaa, jos ajattelet kohteita pisteinä n-ulotteisessa avaruudessa). Algoritmi luokittelee kohteet k samankaltaisuusryhmään tai -klusteriin. Tämän samankaltaisuuden laskemiseksi käytämme mittana euklidista etäisyyttä.

Algoritmi toimii seuraavasti:

  1. Ensin alustamme satunnaisesti k pistettä, joita kutsutaan keskiarvoiksi tai klusterikeskeiksi.
  2. Luokittelemme jokaisen kohteen lähimmän keskiarvon mukaan ja päivitämme keskiarvon koordinaatit, jotka ovat tähän klusteriin tähän mennessä luokiteltujen kohteiden keskiarvoja.
  3. Toistamme prosessin tietyn määrän iteraatioita ja lopussa meillä on klusterimme.

Edellä mainittuja pisteitä kutsutaan keskiarvoiksi, koska ne ovat niihin luokiteltujen kohteiden keskiarvoja. Näiden keinojen alustamiseksi meillä on monia vaihtoehtoja. Intuitiivinen menetelmä on alustaa välineet tietojoukon satunnaisten kohteiden mukaan. Toinen tapa on alustaa keskiarvot satunnaisilla arvoilla tietojoukon rajojen välillä (jos kyseessä on ominaisuus x, kohteiden arvot ovat [0,3], alustamme keskiarvot arvoilla for x klo [0,3]).

Yllä oleva algoritmi pseudokoodissa on seuraava:

Initialize k means with random values -->Tietylle iteraatioiden määrälle: --> Iteroi alkioiden kautta: --> Etsi kohdetta lähinnä oleva keskiarvo laskemalla kohteen euklidinen etäisyys kullakin keinolla --> Määritä alkio merkitykseen --> Päivitä keskiarvo siirtämällä sitä kyseisen klusterin kohteiden keskiarvoon>

K-Means-klusteroinnin käyttöönotto Pythonissa

Esimerkki 1

Tuo tarvittavat kirjastot

Me tuomme maahan Nuhjuinen tilastollisia laskelmia varten, Matplotlib piirtää kaavio, ja make_blobs sklearn.datasetsista.

Python 3


sql-lausekkeet



import> numpy as np> import> matplotlib.pyplot as plt> from> sklearn.datasets>import> make_blobs>

>

>

Luo mukautettu tietojoukko make_blobsilla ja piirrä se

Python 3




X,y>=> make_blobs(n_samples>=> 500>,n_features>=> 2>,centers>=> 3>,random_state>=> 23>)> fig>=> plt.figure(>0>)> plt.grid(>True>)> plt.scatter(X[:,>0>],X[:,>1>])> plt.show()>

>

>

Lähtö :

Klusterin tietojoukko - Geeksforgeeks

Klusterin tietojoukko

Alusta satunnaiset sentroidit

Koodi alustaa kolme klusteria K-keskiarvoklusterointia varten. Se asettaa satunnaisen siemenen ja luo satunnaisia ​​klusterikeskuksia tietyllä alueella ja luo tyhjän lista pisteitä jokaisesta klusterista.

Python 3




k>=> 3> clusters>=> {}> np.random.seed(>23>)> for> idx>in> range>(k):> >center>=> 2>*>(>2>*>np.random.random((X.shape[>1>],))>->1>)> >points>=> []> >cluster>=> {> >'center'> : center,> >'points'> : []> >}> > >clusters[idx]>=> cluster> > clusters>

>

>

Lähtö:

{0: {'center': array([0.06919154, 1.78785042]), 'points': []},  1: {'center': array([ 1.06183904, -0.87041662]), 'points': []},  2: {'center': array([-1.11581855, 0.74488834]), 'points': []}}>

Piirrä satunnainen alustuskeskus datapisteillä

Python 3




plt.scatter(X[:,>0>],X[:,>1>])> plt.grid(>True>)> for> i>in> clusters:> >center>=> clusters[i][>'center'>]> >plt.scatter(center[>0>],center[>1>],marker>=> '*'>,c>=> 'red'>)> plt.show()>

>

>

Lähtö :

Datapisteet, joissa on satunnainen keskus - Geeksforgeeks

Datapisteet, joissa on satunnainen keskus

Kaavio näyttää datapisteiden (X[:,0], X[:,1]) sirontakuvaajan ruudukkoviivoineen. Se merkitsee myös alkuperäiset klusterikeskukset (punaiset tähdet), jotka on luotu K-keskiarvoklusterointia varten.

Määrittele euklidinen etäisyys

Python 3




def> distance(p1,p2):> >return> np.sqrt(np.>sum>((p1>->p2)>*>*>2>))>

>

>

Luo funktio klusterikeskuksen määrittämiseksi ja päivittämiseksi

E-vaihe määrittää datapisteet lähimpään klusterikeskukseen ja M-vaihe päivittää klusterikeskukset K-keskiarvojen klusteroinnin osoitettujen pisteiden keskiarvon perusteella.

Python 3

aakkosesta numeroon




#Implementing E step> def> assign_clusters(X, clusters):> >for> idx>in> range>(X.shape[>0>]):> >dist>=> []> > >curr_x>=> X[idx]> > >for> i>in> range>(k):> >dis>=> distance(curr_x,clusters[i][>'center'>])> >dist.append(dis)> >curr_cluster>=> np.argmin(dist)> >clusters[curr_cluster][>'points'>].append(curr_x)> >return> clusters> > #Implementing the M-Step> def> update_clusters(X, clusters):> >for> i>in> range>(k):> >points>=> np.array(clusters[i][>'points'>])> >if> points.shape[>0>]>>>:> >new_center>=> points.mean(axis>=>0>)> >clusters[i][>'center'>]>=> new_center> > >clusters[i][>'points'>]>=> []> >return> clusters>

>

>

Vaihe 7: Luo funktio ennustaaksesi klusterin datapisteille

Python 3




def> pred_cluster(X, clusters):> >pred>=> []> >for> i>in> range>(X.shape[>0>]):> >dist>=> []> >for> j>in> range>(k):> >dist.append(distance(X[i],clusters[j][>'center'>]))> >pred.append(np.argmin(dist))> >return> pred>

>

str.replace javassa
>

Määritä, päivitä ja ennusta klusterikeskus

Python 3




clusters>=> assign_clusters(X,clusters)> clusters>=> update_clusters(X,clusters)> pred>=> pred_cluster(X,clusters)>

>

>

Piirrä datapisteet niiden ennustetun klusterikeskuksen kanssa

Python 3




plt.scatter(X[:,>0>],X[:,>1>],c>=> pred)> for> i>in> clusters:> >center>=> clusters[i][>'center'>]> >plt.scatter(center[>0>],center[>1>],marker>=> '^'>,c>=> 'red'>)> plt.show()>

>

>

Lähtö :

K-keino klusterointi - Geeksforgeeks

K- tarkoittaa klusterointia

Kaavio näyttää datapisteet värjättyinä niiden ennustetuilla klustereilla. Punaiset merkit edustavat päivitettyjä klusterikeskuksia E-M-vaiheiden jälkeen K-means-klusterointialgoritmissa.

Esimerkki 2

Tuo tarvittavat kirjastot

Python 3




import> pandas as pd> import> numpy as np> import> seaborn as sns> import> matplotlib.pyplot as plt> import> matplotlib.cm as cm> from> sklearn.datasets>import> load_iris> from> sklearn.cluster>import> KMeans>

>

>

Lataa tietojoukko

Python 3




X, y>=> load_iris(return_X_y>=>True>)>

kokoinen lateksifontti

>

>

Kyynärpää menetelmä

Ihanteellisen ryhmien lukumäärän löytäminen tietojen jakamiseen on perusvaihe kaikissa valvomattomissa algoritmeissa. Yksi yleisimmistä tekniikoista tämän k:n ihanteellisen arvon selvittämiseksi on kyynärpäämenetelmä.

Python 3




#Find optimum number of cluster> sse>=> []>#SUM OF SQUARED ERROR> for> k>in> range>(>1>,>11>):> >km>=> KMeans(n_clusters>=>k, random_state>=>2>)> >km.fit(X)> >sse.append(km.inertia_)>

>

>

Piirrä kyynärpääkaavio löytääksesi optimaalisen klusterin lukumäärän

Python 3




sns.set_style(>'whitegrid'>)> g>=>sns.lineplot(x>=>range>(>1>,>11>), y>=>sse)> g.>set>(xlabel>=>'Number of cluster (k)'>,> >ylabel>=> 'Sum Squared Error'>,> >title>=>'Elbow Method'>)> plt.show()>

>

>

Lähtö:

Kyynärpää menetelmä

Yllä olevasta kaaviosta voidaan havaita, että k=2 ja k=3 kyynärpäämäisessä tilanteessa. Joten harkitsemme K = 3

Rakenna Kmeans-klusterointimalli

Python 3




kmeans>=> KMeans(n_clusters>=> 3>, random_state>=> 2>)> kmeans.fit(X)>

>

>

Lähtö:

KMeans KMeans(n_clusters=3, random_state=2)>

Etsi klusterin keskus

Python 3

kuinka monta kaupunkia yhdysvalloissa




kmeans.cluster_centers_>

>

>

Lähtö:

array([[5.006 , 3.428 , 1.462 , 0.246 ],  [5.9016129 , 2.7483871 , 4.39354839, 1.43387097],  [6.85 , 3.07368421, 5.74210526, 2.07105263]])>

Ennusta klusteriryhmä:

Python 3




pred>=> kmeans.fit_predict(X)> pred>

>

>

Lähtö:

array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2,  2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 2, 1, 1, 2, 2, 2, 2,  2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 1], dtype=int32)>

Piirrä klusterin keskus tietopisteineen

Python 3




plt.figure(figsize>=>(>12>,>5>))> plt.subplot(>1>,>2>,>1>)> plt.scatter(X[:,>0>],X[:,>1>],c>=> pred, cmap>=>cm.Accent)> plt.grid(>True>)> for> center>in> kmeans.cluster_centers_:> >center>=> center[:>2>]> >plt.scatter(center[>0>],center[>1>],marker>=> '^'>,c>=> 'red'>)> plt.xlabel(>'petal length (cm)'>)> plt.ylabel(>'petal width (cm)'>)> > plt.subplot(>1>,>2>,>2>)> plt.scatter(X[:,>2>],X[:,>3>],c>=> pred, cmap>=>cm.Accent)> plt.grid(>True>)> for> center>in> kmeans.cluster_centers_:> >center>=> center[>2>:>4>]> >plt.scatter(center[>0>],center[>1>],marker>=> '^'>,c>=> 'red'>)> plt.xlabel(>'sepal length (cm)'>)> plt.ylabel(>'sepal width (cm)'>)> plt.show()>

>

>

Lähtö:

K-keino klusterointi - Geeksforgeeks

K- tarkoittaa klusterointia

Vasemmalla oleva alikaavio näyttää terälehden pituuden vs. terälehden leveyden datapisteillä, jotka on värjätty klustereilla, ja punaiset merkit osoittavat K-keskiarvojen klusterikeskuksia. Oikeanpuoleinen alakuva näyttää verholehden pituuden vs. verholeveyden samalla tavalla.

Johtopäätös

Yhteenvetona voidaan todeta, että K-means-klusterointi on tehokas valvomaton koneoppimisalgoritmi merkitsemättömien tietojoukkojen ryhmittelyyn. Sen tavoitteena on jakaa tiedot klustereihin, jolloin samanlaiset datapisteet kuuluvat samaan ryhmään. Algoritmi alustaa klusterin sentroidit ja määrittää iteratiivisesti datapisteet lähimpään sentroidiin päivittäen sentroidit kunkin klusterin pisteiden keskiarvon perusteella.

Usein kysytyt kysymykset (FAQ)

1. Mitä on k-means-klusterointi data-analyysissä?

K-means on osiointimenetelmä, joka jakaa tietojoukon 'k' erilliseen, ei-päällekkäiseen osajoukkoon (klusteriin) samankaltaisuuden perusteella pyrkien minimoimaan varianssia kunkin klusterin sisällä.

2. Mikä on esimerkki k-keskiarvosta tosielämässä?

Markkinoinnin asiakassegmentointi, jossa k-keino ryhmittelee asiakkaat ostokäyttäytymisen perusteella, jolloin yritykset voivat räätälöidä markkinointistrategioita eri segmenteille.

3. Minkä tyyppistä dataa k-means-klusterointimalli on?

K-means toimii hyvin numeerisen datan kanssa, jossa datapisteiden välisen etäisyyden käsite on merkityksellinen. Sitä käytetään yleisesti jatkuviin muuttujiin.

4. Käytetäänkö K-keskiarvoa ennustamiseen?

K-keskiarvoa käytetään ensisijaisesti samanlaisten datapisteiden klusterointiin ja ryhmittelyyn. Se ei ennusta uusien tietojen tarroja; se määrittää ne olemassa oleviin klustereihin samankaltaisuuden perusteella.

5.Mikä on k-means-klusteroinnin tavoite?

Tavoitteena on osioida tiedot 'k'-klusteriin, minimoiden klusterin sisäinen varianssi. Se pyrkii muodostamaan ryhmiä, joissa datapisteet kussakin klusterissa ovat samankaltaisempia keskenään kuin muiden klustereiden kanssa.