Duomenų mokslas

K reiškia grupavimą

K reiškia grupavimą

Šio tinklaraščio kodą kartu su duomenų rinkiniu galite rasti šioje nuorodoje https: // github.com / shekharpandey89 / k-reiškia

„K-Means“ klasterizavimas yra neprižiūrimas mašininio mokymosi algoritmas. Jei palyginsime „K-Means“ neprižiūrimą grupavimo algoritmą su prižiūrimu algoritmu, nereikia mokyti modelio su pažymėtais duomenimis. K-Means algoritmas naudojamas klasifikuoti ar grupuoti skirtingus objektus pagal jų atributus ar ypatybes į K grupių skaičių. Čia K yra sveikasis skaičius. „K-Means“ apskaičiuoja atstumą (naudodamas atstumo formulę) ir tada nustato mažiausią atstumą tarp duomenų taškų ir centrinės grupės, kad suklasifikuotų duomenis.

Supraskime K-reikšmes naudodami mažą pavyzdį, kuriame naudojami 4 objektai, ir kiekvienas objektas turi 2 atributus.

ObjectsName Atributas_X Atributas_Y
M1 1 1
M2 2 1
M3 4 3
M4 5 4

K reiškia skaitmeninį pavyzdį išspręsti:

Norėdami išspręsti pirmiau pateiktą skaitinę problemą naudodami „K-Means“, turime atlikti šiuos veiksmus:

K-Means algoritmas yra labai paprastas. Pirmiausia turime pasirinkti bet kokį atsitiktinį K skaičių ir tada pasirinkti centrus arba grupių centrą. Norėdami pasirinkti centroidus, galime pasirinkti bet kokį atsitiktinį objektų skaičių, kad būtų galima inicijuoti (priklauso nuo K vertės).

Pagrindiniai „K-Means“ algoritmo žingsniai yra šie:

  1. Bėga tol, kol nė vienas objektas nepajudės iš savo centroidų (stabilus).
  2. Kai kuriuos centroidus pirmiausia pasirenkame atsitiktinai.
  3. Tada nustatome atstumą tarp kiekvieno objekto ir centroidų.
  4. Objektų grupavimas pagal minimalų atstumą.

Taigi, kiekvienas objektas turi du taškus kaip X ir Y, ir jie grafiko erdvėje vaizduojami taip:

Taigi iš pradžių mes pasirenkame K = 2 reikšmę kaip atsitiktinę, kad išspręstume aukščiau pateiktą problemą.

1 žingsnis: Iš pradžių mes pasirenkame pirmuosius du objektus (1, 1) ir (2, 1) kaip savo centroidus. Žemiau pateiktoje diagramoje rodomas tas pats. Šiuos centroidus vadiname C1 (1, 1) ir C2 (2,1). Čia galime sakyti, kad C1 yra grupė_1, o C2 yra grupė_2.

2 žingsnis: Dabar apskaičiuosime kiekvieno objekto duomenų tašką iki centroidų, naudodami Euklido atstumo formulę.

Norėdami apskaičiuoti atstumą, mes naudojame šią formulę.

Mes apskaičiuojame atstumą nuo objektų iki centroidų, kaip parodyta žemiau esančiame paveikslėlyje.

Taigi, apskaičiavę kiekvieno objekto duomenų taško atstumą, naudodamiesi aukščiau pateiktu atstumo metodu, galiausiai gavome atstumo matricą, kaip nurodyta toliau:

DM_0 =

0 1 3.61 5 C1 = (1,1)

klasteris1

grupė_1
1 0 2.83 4.24 C2 = (2,1)

klasteris2

grupė_2
A B C D
1 2 4 5   X
1 1 3 4   Y

Dabar mes apskaičiavome kiekvieno objekto atstumo vertę kiekvienam centroidui. Pavyzdžiui, objektų taškai (1,1) turi atstumo reikšmę iki c1 yra 0, o c2 yra 1.

Iš minėtos atstumo matricos sužinome, kad objektas (1, 1) turi atstumą iki klasterio1 (c1) yra 0, o iki klasterio2 (c2) yra 1. Taigi objektas yra arti paties klasterio1.

Panašiai, jei patikrinsime objektą (4, 3), atstumas iki klasterio1 yra 3.61 ir 2 klasteris yra 2.83. Taigi objektas (4, 3) pereis į grupę2.

Panašiai, jei patikrinsite objektą (2, 1), atstumas iki klasterio1 yra 1, o iki klasterio2 - 0. Taigi, šis objektas bus perkeltas į grupę2.

Dabar pagal jų atstumo vertę mes grupuojame taškus (objektų grupavimas).

G_0 =

A B C D
1 0 0 0   grupė_1
0 1 1 1   grupė_2

Dabar pagal jų atstumo vertę mes grupuojame taškus (objektų grupavimas).

Galiausiai, atlikus grupavimą, grafikas atrodys taip, kaip nurodyta toliau (G_0).

Kartojimas_1: Dabar mes apskaičiuosime naujus centroidus, kai pradinės grupės pasikeis dėl atstumo formulės, kaip parodyta G_0. Taigi, group_1 turi tik vieną objektą, todėl jo vertė vis tiek yra c1 (1,1), tačiau group_2 turi 3 objektus, taigi jos naujoji centroidinė vertė yra

Taigi, nauji c1 (1,1) ir c2 (3.66, 2.66)

Dabar mes vėl turime apskaičiuoti visą atstumą iki naujų centroidų, kaip apskaičiavome anksčiau.

DM_1 =

0 1 3.61 5 C1 = (1,1)

klasteris1

grupė_1
3.14 2.36 0.47 1.89 C2 = (3.66,2.66)

klasteris2

grupė_2
A B C D
1 2 4 5   X
1 1 3 4   Y

Iteracija_1 (objektų grupavimas): Dabar, skaičiuodami naują atstumo matricą (DM_1), mes ją sugrupuojame pagal tai. Taigi, mes perkeliame M2 objektą iš grupės_2 į grupę_1 kaip minimalaus atstumo iki centroidų taisyklę, o likusi objekto dalis bus tokia pati. Taigi naujas grupavimas bus toks, koks yra žemiau.

G_1 =

A B C D
1 1 0 0   grupė_1
0 0 1 1   grupė_2

Dabar turime dar kartą apskaičiuoti naujus centroidus, nes abu objektai turi dvi reikšmes.

Taigi, nauji centroidai bus

Taigi, kai gausime naujus centroidus, grupavimas atrodys taip:

c1 = (1.5, 1)

c2 = (4.5, 3.5)

Pasikartojimas_2: Pakartojame žingsnį, kuriame apskaičiuojame naują kiekvieno objekto atstumą iki naujų apskaičiuotų centroidų. Taigi, atlikę skaičiavimą, gausime šią iteracijos_2 atstumo matricą.

DM_2 =

0.5 0.5 3.20 4.61 C1 = (1.5, 1)

klasteris1

grupė_1
4.30 3.54 0.71 0.71 C2 = (4.5, 3.5)

klasteris2

grupė_2

A B C D

A B C D
1 2 4 5   X
1 1 3 4   Y

Vėlgi, grupavimo užduotis atliekame pagal mažiausią atstumą, kaip ir anksčiau. Taigi tai padarę, mes gavome klasterių matricą, kuri yra tokia pati kaip G_1.

G_2 =

A B C D
1 1 0 0   grupė_1
0 0 1 1   grupė_2

Kaip čia, G_2 == G_1, todėl daugiau kartoti nereikia, ir mes galime čia sustoti.

K-reiškia įgyvendinimą naudojant „Python“:

Dabar ketonuose įgyvendinsime K reikšmės algoritmą. Norėdami įgyvendinti K reikšmę, mes naudosime garsųjį „Iris“ duomenų rinkinį, kuris yra atviro kodo. Šį duomenų rinkinį sudaro trys skirtingos klasės. Šis duomenų rinkinys iš esmės turi keturias savybes: Taurelės ilgis, taurėlapio plotis, žiedlapio ilgis ir žiedlapio plotis. Paskutiniame stulpelyje bus nurodytas tos eilės klasės pavadinimas kaip setosa.

Duomenų rinkinys atrodo taip:

Norėdami įgyvendinti „python k-mean“, turime importuoti reikalingas bibliotekas. Taigi mes importuojame „Pandas“, „Numpy“, „Matplotlib“ ir „KMeans“ iš „sklearn“.griovelis, kaip nurodyta toliau:

Skaitome Irisą.„csv“ duomenų rinkinys, naudojant „read_csv“ pandos metodą, ir rodys 10 geriausių rezultatų naudodamas „head“ metodą.

Dabar mes skaitome tik tas duomenų rinkinio ypatybes, kurių mums reikėjo mokyti modelį. Taigi mes skaitome visas keturias duomenų rinkinių ypatybes (taurėlapio ilgis, taurelės plotis, žiedlapio ilgis, žiedlapio plotis). Tam mes perdavėme keturias indekso reikšmes [0, 1, 2, 3] į pandos duomenų rėmo iloc funkciją (df), kaip parodyta žemiau:

Dabar grupių skaičių pasirenkame atsitiktinai (K = 5). Sukuriame K reikšmės klasės objektą ir tada pritaikome savo x duomenų rinkinį mokymui ir prognozavimui, kaip parodyta žemiau:

Dabar mes ketiname vizualizuoti savo modelį su atsitiktine K = 5 verte. Mes aiškiai matome penkias grupes, bet atrodo, kad ji nėra tiksli, kaip parodyta žemiau.

Taigi, kitas mūsų žingsnis yra išsiaiškinti, ar klasterių skaičius buvo tikslus, ar ne. Tam mes naudojame alkūnės metodą. „Alkūnės“ metodas naudojamas norint sužinoti optimalų konkretaus duomenų rinkinio sankaupos skaičių. Šis metodas bus naudojamas norint sužinoti, ar k = 5 reikšmė buvo teisinga, ar ne, nes mes nesuprantame aiškios grupių. Taigi, po to einame į šį grafiką, kuris parodo, kad K = 5 vertė nėra teisinga, nes optimali vertė yra nuo 3 iki 4.

Dabar mes vėl paleisime aukščiau nurodytą kodą su grupių skaičiumi K = 4, kaip parodyta žemiau:

Dabar mes ketiname vizualizuoti aukščiau pateiktą K = 4 naujų versijų grupavimą. Žemiau pateiktame ekrane parodyta, kad dabar grupavimas atliekamas naudojant k reikšmę.

Išvada

Taigi mes ištyrėme K reikšmės algoritmą tiek skaitmeniniu, tiek pitono kodu. Taip pat matėme, kaip galime sužinoti konkretaus duomenų rinkinio grupių skaičių. Kartais „alkūnės“ metodas negali pateikti teisingo grupių skaičiaus, todėl tokiu atveju galime pasirinkti kelis metodus.

Kaip sukurti žaidimą „Linux“
Prieš dešimtmetį nedaugelis „Linux“ vartotojų numatė, kad jų mėgstama operacinė sistema vieną dieną bus populiari komercinių vaizdo žaidimų žaidimų pl...
Atvirojo kodo komercinių žaidimų variklių uostai
Nemokami atvirojo kodo ir įvairių platformų žaidimų varikliai gali būti naudojami žaidžiant senus ir kai kuriuos gana naujus žaidimų pavadinimus. Šiam...
Geriausi „Linux“ komandinės eilutės žaidimai
Komandų eilutė yra ne tik jūsų didžiausias sąjungininkas naudojant „Linux“, bet ir pramogų šaltinis, nes ją galite naudoti norėdami žaisti daug įdomių...