top of page

 

KLASTERIZACIJA

Analiza klastera ili grupisanje je zadatak grupisanja skupa objekata na takav način da su objekti u istoj grupi (koji se nazivaju klaster) sličniji (u nekom smislu) jedni drugima nego onima u drugim grupama (klasterima). To je glavni zadatak istraživačke analize podataka i uobičajena tehnika za statističku analizu podataka, koja se koristi u mnogim oblastima, uključujući prepoznavanje obrazaca, analizu slika, pronalaženje informacija, bioinformatiku, kompresiju podataka, kompjutersku grafiku i mašinsko učenje. Za razliku od klasifikacije, klasterizacija spada u nenadgledanom tipu mašinskog učenja zato što ne odvaja vrednosti po predefinisanim grupama, već po njenim lokacijama u koordinatnom sistemu zato što se koristi k-means odnosno KNearestNeightbour sistem grupisanja.

Slika iznad predstavlja primer jedne klasterizacije u kojoj se iz slike 1 formirala tri klastera koje su predstavljene različitim bojama. U naredno delu, klasterizacija će biti korišćena i za predvidjanje kom klasteru bi neka nova vrednost odgovarala.

Primer za ovu oblast je predstavljena u nastavku ovih vežbi i cilj je da napravimo klasterizaciju od ulaznih vrednosti i to po 2, 4 i 6 klastera, nakon koga će biti izvršena predikcija za konkretnu vrednost [43, 70], kako bi videli kom klasteru ta tačka pripada u sva tri primera.

Iz scitlearn biblioteke koristimo KMeans klasu za formiranje klastera, iz matplotlib standardni pyplot za formiranje koordinatnih sistema za prikazivanje rezultata, pandas za rad sa podacima iz tabele i random pomoću kog generišemo nasumične boje za svaki od različitih klastera.

Prvo se počinje sa učitavanjem fajla koji je okačen iznad. Formira se niz u kome se definiše broj svih klastera koje želimo da formiramo (2, 4, 6). Kao što je prethodno već rečeno, boje kojima će biti obojeni klasteri su nasumično generisani preko random biblioteke. U zavisnosti od maksimalnog broja klastera koji se moraju napraviti, formira se niz koji će biti popunjen sa onoliko nasumičnih heksadekadnih vrednosti boja za maksimalnu vrednost broja u nizu. Dodavanje nove boje se koristi preko ključne reči append, i u zagradi se preko random.choice biraju 6 nasumičnih karaktera u listu svih heksadekadnih vrednosti i čuva u nizu.

U ovom delu koda se podešava veličina prozora ( svaki koordinatni sistem biće veličine 4x4), plt.show koji pokreće prozor sa svim rezultatima i for petlja za svaki broj klastera posebno ( 3 iteracija u našem primeru).

Funkcija plt.subplot dodeljuje lokaciju, odnosno redosled koordinatnih sistema u figuri, kmeans promenljiva formira sistem koji nam izvršava klasterizaciju ( u kome definišemo k kao broj klastera koje želimo da formiramo), kmeans.fit koji daje sve podatke algoritmu. Gcenters nam odredjuje sredine svih klastera dok labels čuva podatke o tome koji red ( X i Y kolone) pripada kom klasteru.

Formiramo dve for petlje. U prvoj for petlji upisujemo sve vrednosti iz tabele u koordinatni sistem, koristeći boje koje smo na početku definisali kao boje svakih od vrednosti unutar klastera.

Druga for petlja nam upisuje tekst na sredini svakog klastera, u kome je smešten redni broj klastera na koordinatnom sistemu, podešen da mu veličina bude 15 i boldiran.

6.png

Kao što je to napomenuto na početku, možemo koristiti ove klasterizacije da bi predvideli kom klasteru bi pripadala neka nova vrednost koja prethodno nije definisana u tabeli. Dodeljujemo joj, radi primera, vrednosti 43 za X i 70 za Y. Preko funkcije plt.scatter dodajemo vrednost na svaki koordinatni sistem ( da bi mi kao korisnici mogli sami da se uverimo da je predvidjanje zapravo onakvo kako ispisuje, i preko printa dobijamo rezultat kom klasteru on pripada.

Rezultat u konzoli treba da izgleda nalik rezultatu sa naredne slike ( redni broj klastera je nasumično dodeljen, nakon svakog novog pokretanja koda se raspored rednih brojeva menja).

Poslednji korak dodaje naziv iznad koordinatnog sistema da bi bilo preglednije koji primer on izvršava. Xlabel i ylabel postavlja tekst na koordinatnim osama. I na kraju se upisuje kako bi uvećali brojač i započeli novu iteraciju (brojač menjamo zbog rasporeda koordinatnih sistema na prozoru.

Rezultat pokretanja koda izgleda kao na slici:

Redni broj klastera je zapisan počevši od nule. Takodje, crna tačka koja je dodata na svim koordinatnim sistemima je vrednost koju predvidjamo kom klasteru on pripada. U prvom primeru pripadada klasteru 0, drugom takodje 0, a trećem sistemu pripada klasteru 4. Rezultat u terminatu je upisan na jednoj od slika iznad, u kome se jasno vidi isti rezultat koji je i ovde predstavljen na prozorima.

Kompletan kod primera:

k1.png

Izvršiti klasterizaciju nad ulaznim vrednostima datim na sledećem linku:

https://raw.githubusercontent.com/Milenkovic997/CSV/main/Klasterizacija.csv

Napraviti četri koordinatna sistema, poređanim u 2x2 sistemu, na kome se formiraju 2,4,8 i 16 klastera. Odrediti predviđanje u kom klasteru pripada tačka sa vrednostima [20, 10] u svim formiranim koordinatniim sistemima.

Primer rezultata ovog zadatka je dat na slici ispod:

Rešenje zadatka 1:

bottom of page