К-Меанс Цлустеринг је алгоритам за учење без надзора који се користи за решавање проблема груписања у машинском учењу или науци о подацима. У овој теми ћемо научити шта је К-меанс алгоритам, како алгоритам функционише, заједно са Питхон имплементацијом к-меанс кластерисања.
Шта је К-Меанс алгоритам?
Кластерисање К-средстава је ан Алгоритам за учење без надзора , који групише неозначени скуп података у различите кластере. Овде К дефинише број унапред дефинисаних кластера који треба да се креирају у процесу, као да је К=2, биће два кластера, а за К=3 биће три кластера, итд.
То је итеративни алгоритам који дели неозначени скуп података у к различитих кластера на такав начин да сваки скуп података припада само једној групи која има слична својства.
Омогућава нам да групишемо податке у различите групе и згодан начин да сами откријемо категорије група у неозначеном скупу података без потребе за било каквом обуком.
То је алгоритам заснован на центроиду, где је сваки кластер повезан са центром. Главни циљ овог алгоритма је да минимизира збир растојања између тачке података и њихових одговарајућих кластера.
Алгоритам узима неозначени скуп података као улаз, дели скуп података на к-број кластера и понавља процес све док не пронађе најбоље кластере. Вредност к треба да буде унапред одређена у овом алгоритму.
К-значи груписање алгоритам углавном обавља два задатка:
- Одређује најбољу вредност за К централне тачке или центре итеративним процесом.
- Додељује сваку тачку података најближем к-центру. Оне тачке података које су близу одређеног к-центра стварају кластер.
Стога сваки кластер има тачке података са неким заједничким карактеристикама и удаљен је од других кластера.
Доњи дијаграм објашњава рад К-меанс алгоритма груписања:
Како функционише К-Меанс алгоритам?
Рад К-Меанс алгоритма је објашњен у следећим корацима:
Корак 1: Изаберите број К да бисте одредили број кластера.
Корак 2: Изаберите насумично К тачака или центре. (Може бити друго из улазног скупа података).
Корак 3: Доделите сваку тачку података њиховом најближем центроиду, који ће формирати унапред дефинисане К кластере.
Корак 4: Израчунајте варијансу и поставите нови тежиште сваког кластера.
Корак 5: Поновите треће кораке, што значи да сваку тачку података поново доделите новом најближем тежишту сваког кластера.
Корак 6: Ако дође до било каквог поновног додељивања, идите на корак 4, иначе идите на ЗАВРШИТЕ.
Корак-7 : Модел је спреман.
Хајде да разумемо горе наведене кораке узимајући у обзир визуелне заплете:
Претпоставимо да имамо две променљиве М1 и М2. Дијаграм расејања ове две варијабле на к-и осе је дат у наставку:
- Узмимо број к кластера, тј. К=2, да идентификујемо скуп података и да их ставимо у различите кластере. То значи да ћемо овде покушати да групишемо ове скупове података у два различита кластера.
- Морамо да изаберемо неколико насумичних к тачака или тежиште да бисмо формирали кластер. Ове тачке могу бити или тачке из скупа података или било која друга тачка. Дакле, овде бирамо доње две тачке као к тачака, које нису део нашег скупа података. Размотрите слику испод:
- Сада ћемо сваку тачку података на дијаграму расејања доделити најближој К-тачки или тежишту. Израчунаћемо га применом неке математике коју смо проучавали да бисмо израчунали растојање између две тачке. Дакле, нацртаћемо медијану између оба тежишта. Размотрите слику испод:
Из горње слике је јасно да су тачке са леве стране праве близу К1 или плавог центра, а тачке десно од линије су близу жуте тезге. Обојимо их у плаво и жуто за јасну визуелизацију.
- Како треба да пронађемо најближи кластер, тако ћемо поновити поступак бирањем нови центар . Да бисмо изабрали нове тезге, израчунаћемо тежиште ових тежишта и наћи ћемо нове тезге као што је доле:
- Затим ћемо сваку тачку података поново доделити новом центроиду. За ово ћемо поновити исти процес проналажења средње линије. Медијана ће бити као на слици испод:
Са горње слике, можемо видети, једна жута тачка је на левој страни линије, а две плаве тачке су десно од линије. Дакле, ове три тачке ће бити додељене новим центрима.
Како је дошло до прерасподеле, поново ћемо прећи на корак 4, а то је проналажење нових центара или К-тачака.
- Поновићемо процес проналажењем центра гравитације тежишта, тако да ће нове тезге бити као што је приказано на слици испод:
- Како смо добили нове центре, тако ћемо поново повући средњу линију и поново доделити тачке података. Дакле, слика ће бити:
- Можемо видети на горњој слици; нема различитих тачака података са обе стране линије, што значи да је наш модел формиран. Размотрите слику испод:
Пошто је наш модел спреман, сада можемо уклонити претпостављене центре, а два коначна кластера ће бити као што је приказано на слици испод:
Како одабрати вредност 'К броја кластера' у К-меанс Цлустеринг?
Перформансе К-меанс алгоритма за груписање зависе од високо ефикасних кластера које он формира. Али избор оптималног броја кластера је велики задатак. Постоји неколико различитих начина да се пронађе оптималан број кластера, али овде говоримо о најприкладнијој методи за проналажење броја кластера или вредности К. Метода је дата у наставку:
Метода лакта
Метода лакта је један од најпопуларнијих начина за проналажење оптималног броја кластера. Овај метод користи концепт ВЦСС вредности. ВЦСС означава У оквиру скупа квадрата , који дефинише укупне варијације унутар кластера. Формула за израчунавање вредности ВЦСС-а (за 3 кластера) је дата у наставку:
алгоритми бинарне претрагеВЦСС= ∑Пја у Цлустер1удаљеност (ПиЦ1)2+∑Пја у Цлустер2удаљеност (ПиЦ2)2+∑Пја у ЦЛустер3удаљеност (ПиЦ3)2
У горњој формули ВЦСС-а,
∑Пја у Цлустер1удаљеност (ПиЦ1)2: То је збир квадрата растојања између сваке тачке података и њеног тежишта унутар кластера1 и исти је за друга два члана.
Да бисмо измерили растојање између тачака података и тежишта, можемо користити било коју методу као што је Еуклидско растојање или растојање Менхетна.
Да би се пронашла оптимална вредност кластера, метода лакта прати следеће кораке:
- Он извршава груписање К-средстава на датом скупу података за различите К вредности (опсези од 1-10).
- За сваку вредност К, израчунава ВЦСС вредност.
- Исцртава криву између израчунатих ВЦСС вредности и броја кластера К.
- Оштра тачка кривине или тачка дијаграма изгледа као крак, тада се та тачка сматра најбољом вредношћу К.
Пошто графикон приказује оштру кривину, која изгледа као лакат, стога је позната као метода лакта. Графикон за методу лакта изгледа као на слици испод:
Напомена: Можемо изабрати број кластера једнак датим тачкама података. Ако изаберемо број кластера једнак тачкама података, онда вредност ВЦСС постаје нула, и то ће бити крајња тачка дијаграма.
Питхон имплементација К-меанс алгоритма за груписање
У горњем одељку смо разговарали о К-меанс алгоритму, а сада да видимо како се може применити коришћењем Питхон .
Пре имплементације, хајде да разумемо коју врсту проблема ћемо овде решити. Дакле, имамо скуп података од Малл_Цустомерс , што су подаци купаца који посећују тржни центар и тамо троше.
У датом скупу података имамо Цустомер_Ид, Гендер, Аге, Годис Инцоме ($) анд Спендинг Сцоре (што је израчуната вредност колико је купац потрошио у тржном центру, што је вредност већа, више је потрошио). Из овог скупа података морамо да израчунамо неке обрасце, пошто је то метод без надзора, тако да не знамо шта тачно да израчунамо.
наредба екцел са великим словима
Кораци које треба пратити за имплементацију су дати у наставку:
Корак 1: Предобрада података Корак
Први корак ће бити претходна обрада података, као што смо радили у нашим ранијим темама Регресија и класификација. Али за проблем груписања, он ће се разликовати од других модела. Хајде да разговарамо о томе:
Као што смо радили у претходним темама, прво ћемо увести библиотеке за наш модел, који је део предобраде података. Код је дат у наставку:
# importing libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd
У горњем коду, нумпи увезли смо за извођење математичког прорачуна, матплотлиб је за цртање графика, и панде служе за управљање скупом података.
Затим ћемо увести скуп података који треба да користимо. Дакле, овде користимо скуп података Малл_Цустомер_дата.цсв. Може се увести помоћу кода испод:
# Importing the dataset dataset = pd.read_csv('Mall_Customers_data.csv')
Извршавањем горњих линија кода, добићемо наш скуп података у Спидер ИДЕ. Скуп података изгледа као на слици испод:
Из горњег скупа података, морамо пронаћи неке обрасце у њему.
Овде нам није потребна никаква зависна варијабла за корак пре обраде података јер је то проблем груписања и немамо појма шта да одредимо. Зато ћемо само додати ред кода за матрицу карактеристика.
x = dataset.iloc[:, [3, 4]].values
Као што видимо, издвајамо само 3рди 4тходлика. То је зато што нам је потребна 2д дијаграма да бисмо визуелизовали модел, а неке карактеристике нису потребне, као што је цустомер_ид.
Корак 2: Проналажење оптималног броја кластера методом лакта
У другом кораку покушаћемо да пронађемо оптималан број кластера за наш проблем груписања. Дакле, као што је горе објашњено, овде ћемо користити методу лакта за ову сврху.
Као што знамо, метода лакта користи ВЦСС концепт за цртање дијаграма исцртавањем ВЦСС вредности на И-оси и броја кластера на Кс-оси. Дакле, ми ћемо израчунати вредност за ВЦСС за различите к вредности у распону од 1 до 10. Испод је код за то:
#finding optimal number of clusters using the elbow method from sklearn.cluster import KMeans wcss_list= [] #Initializing the list for the values of WCSS #Using for loop for iterations from 1 to 10. for i in range(1, 11): kmeans = KMeans(n_clusters=i, init='k-means++', random_state= 42) kmeans.fit(x) wcss_list.append(kmeans.inertia_) mtp.plot(range(1, 11), wcss_list) mtp.title('The Elobw Method Graph') mtp.xlabel('Number of clusters(k)') mtp.ylabel('wcss_list') mtp.show()
Као што видимо у горњем коду, користили смо тхе КМеанс класа склеарн. библиотеку кластера за формирање кластера.
Затим смо креирали вцсс_лист променљива за иницијализацију празне листе, која се користи да садржи вредност вцсс израчунате за различите вредности к у распону од 1 до 10.
Након тога, ми смо иницијализовали фор петљу за итерацију на различитој вредности к у распону од 1 до 10; пошто фор петља у Питхон-у, искључи излазно ограничење, па се узима као 11 да укључује 10тхвредност.
Остатак кода је сличан као што смо радили у претходним темама, пошто смо модел уградили на матрицу карактеристика и затим нацртали график између броја кластера и ВЦСС-а.
Излаз: Након извршавања горњег кода, добићемо доњи излаз:
Из горњег графикона можемо видети да је тачка лакта у 5. Дакле, број кластера овде ће бити 5.
Корак 3: Обучавање алгоритма К-меанс на скупу података за обуку
Пошто имамо број кластера, сада можемо да тренирамо модел на скупу података.
Да бисмо обучили модел, користићемо исте две линије кода као што смо користили у горњем одељку, али овде уместо коришћења и, користићемо 5, пошто знамо да постоји 5 кластера које треба формирати. Код је дат у наставку:
#training the K-means model on a dataset kmeans = KMeans(n_clusters=5, init='k-means++', random_state= 42) y_predict= kmeans.fit_predict(x)
Први ред је исти као горе за креирање објекта класе КМеанс.
У другом реду кода креирали смо зависну променљиву и_предицт да обуче модел.
Извршавањем горњих линија кода добићемо променљиву и_предицт. Можемо да проверимо испод истраживач променљивих опција у Спидер ИДЕ. Сада можемо да упоредимо вредности и_предицт са нашим оригиналним скупом података. Размотрите слику испод:
Из горње слике, сада можемо закључити да ЦустомерИД 1 припада групи
3 (пошто индекс почиње од 0, па ће се 2 сматрати као 3), а 2 припада кластеру 4, итд.
Корак 4: Визуелизација кластера
Последњи корак је визуелизација кластера. Како имамо 5 кластера за наш модел, тако ћемо визуализовати сваки кластер један по један.
За визуелизацију кластера користиће се дијаграм распршивања користећи мтп.сцаттер() функцију матплотлиб-а.
#visulaizing the clusters mtp.scatter(x[y_predict == 0, 0], x[y_predict == 0, 1], s = 100, c = 'blue', label = 'Cluster 1') #for first cluster mtp.scatter(x[y_predict == 1, 0], x[y_predict == 1, 1], s = 100, c = 'green', label = 'Cluster 2') #for second cluster mtp.scatter(x[y_predict== 2, 0], x[y_predict == 2, 1], s = 100, c = 'red', label = 'Cluster 3') #for third cluster mtp.scatter(x[y_predict == 3, 0], x[y_predict == 3, 1], s = 100, c = 'cyan', label = 'Cluster 4') #for fourth cluster mtp.scatter(x[y_predict == 4, 0], x[y_predict == 4, 1], s = 100, c = 'magenta', label = 'Cluster 5') #for fifth cluster mtp.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s = 300, c = 'yellow', label = 'Centroid') mtp.title('Clusters of customers') mtp.xlabel('Annual Income (k$)') mtp.ylabel('Spending Score (1-100)') mtp.legend() mtp.show()
У горњим редовима кода, написали смо код за сваки кластер, у распону од 1 до 5. Прва координата мтп.сцаттера, тј. к[и_предицт == 0, 0] која садржи к вредност за приказ матрице вредности функција, а и_предицт се креће од 0 до 1.
Излаз:
Излазна слика јасно приказује пет различитих кластера са различитим бојама. Кластери се формирају између два параметра скупа података; Годишњи приход корисника и потрошња. Можемо променити боје и етикете према захтеву или избору. Такође можемо приметити неке тачке из горњих образаца, који су дати у наставку:
- Кластер2 показује да клијент има висок приход, али ниску потрошњу, тако да их можемо категорисати као опрезно .
- Кластер3 показује ниске приходе и ниску потрошњу тако да се могу категорисати као разумни.
- Кластер4 приказује купце са ниским приходима са веома високом потрошњом тако да се могу категорисати као немаран .
- Кластер 5 приказује купце са високим приходима и великом потрошњом тако да се могу категорисати као циљни, а ови купци могу бити најпрофитабилнији купци за власника тржног центра.