版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第R語言實現(xiàn)KMeans聚類算法實例教程目錄什么是k-means聚類算法R實現(xiàn)kmeans聚類算法加載包加載示例數(shù)據(jù)尋找最佳聚類數(shù)量使用最優(yōu)k執(zhí)行kmeans聚類kmeans算法的優(yōu)缺點總結(jié)本文和你一起學習無監(jiān)督機器學習算法kmeans算法,并在R中給詳細的實現(xiàn)示例和步驟。
什么是k-means聚類算法
聚類是從數(shù)據(jù)集中對觀測值進行聚類的機器學習方法。它的目標是聚類相似觀測值,不同類別之間差異較大。聚類是一種無監(jiān)督學習方法,因為它僅嘗試從數(shù)據(jù)集中發(fā)現(xiàn)結(jié)構(gòu),而不是預(yù)測應(yīng)變量的值。
下面是一個市場營銷中對客戶分類的場景,通過下面客戶信息:
家庭收入住房面積戶主職業(yè)據(jù)城區(qū)距離
我們利用這些信息進行聚類,可識別相似家庭,從而能夠識別某類型家庭可能購買某種產(chǎn)品或?qū)δ撤N類型的廣告反應(yīng)更好。
最常用的聚類算法就是k-means聚類算法,下面我們介紹k-means算法并通過示例進行說明。
k-means聚類算法把數(shù)據(jù)集中每個觀測值分為K個類別。每個分類中的觀測值相當類似,K類之間彼此差異較大。實際應(yīng)用中執(zhí)行下列幾步實現(xiàn)k-means聚類算法:
1.確定K值
首先確定把數(shù)據(jù)集分為幾類。通常我們簡單測試幾個不同值K,然后分析結(jié)果,確定那個值更有現(xiàn)實意義。
2.將每個觀察結(jié)果隨機分配到一個初始簇中,從1到K。
3.執(zhí)行以下步驟,直到集群分配停止變化。
對于K個集群中的每一個,計算集群的質(zhì)心。這僅僅是第k個簇中觀測的p特征的向量。
將每個觀測值分配到質(zhì)心最近的簇中。在這里最接近的是用歐氏距離來定義的。
下面通過示例展示R的實現(xiàn)過程。
R實現(xiàn)kmeans聚類算法
加載包
首先加載兩個包,包括kmeans算法的一些輔助函數(shù)。
library(factoextra)
library(cluster)
加載示例數(shù)據(jù)
對于本例我們將使用R中內(nèi)置的usarrest數(shù)據(jù)集,該數(shù)據(jù)集包含1973年美國每個州每10萬居民因謀殺、襲擊和強奸而被捕的人數(shù),以及每個州居住在城市地區(qū)的人口百分比(UrbanPop)。
#loaddata
df-USArrests
#removerowswithmissingvalues
df-na.omit(df)
#scaleeachvariabletohaveameanof0andsdof1
df-scale(df)
#viewfirstsixrowsofdataset
head(df)
#MurderAssaultUrbanPopRape
#Alabama1.242564080.7828393-0.5209066-0.003416473
#Alaska0.507862481.1068225-1.21176422.484202941
#Arizona0.071633411.47880320.99898011.042878388
#Arkansas0.232349380.2308680-1.0735927-0.184916602
#California0.278268231.26281441.75892342.067820292
#Colorado0.025714560.39885930.86080851.864967207
上面代碼首先加載USArrests數(shù)據(jù)集,刪除缺失值,對數(shù)據(jù)值進行標準化。
尋找最佳聚類數(shù)量
執(zhí)行kmeans聚類算法,我們可以使用內(nèi)置包stat中的kmeans()函數(shù),語法如下:
kmeans(data,centers,nstart)
data:數(shù)據(jù)集名稱centers:聚類數(shù)量,即選擇k的值nstart:初始配置個數(shù)。因為不同的初始啟動集合可能會導(dǎo)致不同的結(jié)果,所以建議使用幾種不同的初始配置。k-means算法將找到導(dǎo)致簇內(nèi)變異最小的初始配置。
既然在使用kmeans函數(shù)之前并不確定最優(yōu)聚類數(shù)量,下面通過兩個圖來輔助我們決定:
1.聚類數(shù)量vs.總體平方和
首先使用fviz_nbclust函數(shù)創(chuàng)建一個圖,展示聚類數(shù)量及總體平方和之間的關(guān)系:
fviz_nbclust(df,kmeans,method="wss")
通常我們創(chuàng)建這類圖形尋找某個K類對應(yīng)的平方和值開始彎曲或趨于平緩的肘形。這通常是最理想的聚類數(shù)量。上圖中顯然在k=4個時出現(xiàn)肘形。
2.聚類數(shù)量vs.差距統(tǒng)計
另一個決定最佳聚類數(shù)量的是使用指標:差距統(tǒng)計。它用于比較不同k值聚類差距變化情況。使用cluster包中的clusGap()以及fviz_gap_stat()函數(shù)畫圖:
#calculategapstatisticbasedonnumberofclusters
gap_stat-clusGap(df,
FUN=kmeans,
nstart=25,
K.max=10,
B=50)
#plotnumberofclustersvs.gapstatistic
fviz_gap_stat(gap_stat)
從上圖可以看到k=4時,差距統(tǒng)計最大,這與前面圖的結(jié)果一致。
使用最優(yōu)k執(zhí)行kmeans聚類
最后,我們執(zhí)行kmeans函數(shù),使用k=4作為最優(yōu)值:
#設(shè)置隨機種子,讓結(jié)果可以重現(xiàn)
set.seed(1)
#調(diào)用kmeans聚類算法k=4
km-kmeans(df,centers=4,nstart=25)
#查看結(jié)果
#ShowinNewWindow
#Clusteringk=1,2,...,K.max(=10):..done
#Bootstrapping,b=1,2,...,B(=50)[one"."persample]:
#..................................................50
#RConsole
#ShowinNewWindow
#K-meansclusteringwith4clustersofsizes13,13,16,8
#Clustermeans:
#MurderAssaultUrbanPopRape
#1-0.9615407-1.1066010-0.9301069-0.96676331
#20.69507011.03944140.72263701.27693964
#3-0.4894375-0.38260010.5758298-0.26165379
#41.41188980.8743346-0.81452110.01927104
#Clusteringvector:
#AlabamaAlaskaArizonaArkansasCaliforniaColorado
#422422
#ConnecticutDelawareFloridaGeorgiaHawaiiIdaho
#332431
#IllinoisIndianaIowaKansasKentuckyLouisiana
#231314
#MaineMarylandMassachusettsMichiganMinnesotaMississippi
#123214
#MissouriMontanaNebraskaNevadaNewHampshireNewJersey
#211213
#NewMexicoNewYorkNorthCarolinaNorthDakotaOhioOklahoma
#224133
#OregonPennsylvaniaRhodeIslandSouthCarolinaSouthDakotaTennessee
#333414
#TexasUtahVermontVirginiaWashingtonWestVirginia
#231331
#WisconsinWyoming
#13
#Withinclustersumofsquaresbycluster:
#[1]11.95246319.92243716.2122138.316061
#(between_SS/total_SS=71.2%)
#Availablecomponents:
#[1]"cluster""centers""totss""withinss""tot.withinss"
#[6]"betweenss""size""iter""ifault"
從結(jié)果可見:
16州分在第一個類13州分在第二個類13州分在第三個類8州分在第四個類
我們可以通過fviz_cluster()函數(shù)在二維空間中以散點圖方式展示結(jié)果:
#plotresultsoffinalk-meansmodel
fviz_cluster(km,data=df)
也可以使用aggregate()函數(shù)查看每個類中變量的均值:
#findmeansofeachcluster
aggregate(USArrests,by=list(cluster=km$cluster),mean)
#clusterMurderAssaultUrbanPopRape
#13.6000078.5384652.0769212.17692
#210.81538257.3846276.0000033.19231
#35.65625138.8750073.8750018.78125
#413.93750243.6250053.7500021.41250
輸出結(jié)果解釋如下:
在第一類中的州中平均每100,000人謀殺數(shù)為3.6在第一類中的州中平均每100,000人襲擊數(shù)為78.5在第一類中的州中平均每100,000人城區(qū)居民率為52.1%在第一類中的州中平均每100,000人強奸數(shù)為3.612.2
最后我們把聚類結(jié)果附加到原始數(shù)據(jù)集中:
#addclusterassigmenttooriginaldata
final_data-cbind(USArrests,cluster=km$cluster)
#viewfinaldata
head(final_data)
#MurderAssaultUrbanPopRapecluster
#Alabama13.22365821.24
#Alaska10.02634844.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小區(qū)消防安全評估指南
- 安全生產(chǎn)典范企業(yè)講解
- 2025-2026人教版小學二年級語文期末測試卷上
- 結(jié)構(gòu)專業(yè)考試題及答案
- 2025-2026人教版三年級語文上學期卷
- 腸道菌群與NAFLD肝硬化PHG:MDT調(diào)節(jié)策略
- 2025-2026一年級語文上學期期末測試卷
- 腸狹窄術(shù)后腹腔感染的處理策略
- 腸梗阻合并糖尿病患者的血糖管理策略
- 衛(wèi)生院執(zhí)業(yè)監(jiān)督管理制度
- 安全生產(chǎn)目標及考核制度
- (2026版)患者十大安全目標(2篇)
- 2026年北大拉丁語標準考試試題
- 臨床護理操作流程禮儀規(guī)范
- 2025年酒店總經(jīng)理年度工作總結(jié)暨戰(zhàn)略規(guī)劃
- 空氣栓塞課件教學
- 2025年國家市場監(jiān)管總局公開遴選公務(wù)員面試題及答案
- 肌骨康復(fù)腰椎課件
- 患者身份識別管理標準
- 2025年10月自考04184線性代數(shù)經(jīng)管類試題及答案含評分參考
- 2025年勞動保障協(xié)理員三級技能試題及答案
評論
0/150
提交評論