手把手教你R语言做k均值聚类分析
今天聊聊k均值聚類分析,我們先要知道什么是類,在大數(shù)據(jù)時代,我們每個人都被打上很多個性標簽,比如:宅男,月光族,手機控,非主流等等,每個標簽都可以算是一個類,因此,可以不嚴謹?shù)恼f:類是一些有特殊屬性個體的集合。而聚類分析的目的,就是要把這些個人找出來并區(qū)別出來,聚類分析屬于無監(jiān)督機器學習的一個重要內(nèi)容,今天我們來聊聊K均值聚類分析,那么k均值聚類分析和之前的層級聚類分析有什么不同呢?
K-Means算法是發(fā)展最成熟且原理簡單、算法流程清晰,經(jīng)典算法的步驟描述,分為如下5步完成。
①隨機選取K個樣本作為n個樣本點類中心center_K;
②計算各樣本點plot (x[i], y[i])與各類中心cen?ter_K的距離;
③將各樣本歸于最近的類中心點;
④求各類的樣本的均值,作為新的類的中心center_K_new;
⑤判定:若類中心不再發(fā)生變動或達到迭代次數(shù),算法結(jié)束,否則回到第②步。
如圖下圖所示: 在圖中一共有a至e這5個數(shù)據(jù)以及2個隨機的質(zhì)心點(灰色點)。圖
3(a)為算法經(jīng)過初始化后的狀態(tài), 圖3(b)和圖3(d)是兩個更新過程, 圖3?和圖3(e)是兩個更新后的狀態(tài)。經(jīng)過2輪更新該算法達到穩(wěn)定如圖3(e)所示。
我們繼續(xù)使用之前的肉類數(shù)據(jù)(關(guān)注公眾號回復:肉類數(shù)據(jù)可以獲得該數(shù)據(jù))來進行k均值聚類分析,需要factoextra,dplyr,pacman,cluster包,需要事先下載好,我們先導入數(shù)據(jù)和包
數(shù)據(jù)有5個參數(shù),energy代表食物能量(卡路里),protein蛋白質(zhì),fat脂肪,calcium鈣含量,iron鐵含量,豎排是各種肉的名字,我就不一一解釋了。
數(shù)據(jù)的變量差別很大,我們首先要把數(shù)據(jù)標準化,然后計算歐式距離
在K均值聚類分析中, K的個數(shù)(即分成幾類)這個參數(shù)非常重要,我們先用NbClust的投票功能來看看
這里顯示2,3類都有4次投票,即分層2類和3類都是可以的。
我們還可以使用cluster函數(shù)做增強k均值聚類分析,可以自己聚類,自動分類,在這里函數(shù)傾向于分成2類
也可以通過fviz_gap_stat函數(shù)來投票
函數(shù)fviz_gap_stat也傾向分成2類
那么問題來了,我們到底應該分成2類還是3類呢,我們可以根據(jù)我們的臨床需要進行判斷,我們可以先把圖都做出來比較一下
2類的
3類的
我們可以見到,分成3類后的第1類(紅色箭頭部分)雖然數(shù)據(jù)很少,但是離第3類還是很遠的,我個人覺得不應該被歸入第一類(個人看法),我們就先按3類來分看看。
summary(kmeans1) kmeans1$cluster kmeans1$size
上圖可以看到,各種肉類被分進了組,第一組2種,第二組9種,第三組16種
我們把數(shù)據(jù)集整理一下,如下圖,數(shù)據(jù)被我們分類整理了
我們對每組的數(shù)據(jù)進行平均值統(tǒng)計
由上圖我們可以得出每組數(shù)據(jù)的各類指標平均數(shù),因此我們可知,第一種肉類含能量少,蛋白質(zhì)少,脂肪少,屬于沒有什么營養(yǎng)的肉類。第二種肉類:能量很多,脂肪也很多,可以參考為油炸的高脂肪垃圾食品。第三種為:低熱量,高蛋白質(zhì),低脂肪,并且富含鈣的肉類,比較適合我們中國人的飲食理念和習慣。這樣得出的結(jié)論可以在飲食上給出建議。
我們還可以得出每組指標的密度分布情況:
先對數(shù)據(jù)分組
做能量的分布曲線
par(mfrow = c(1,3)) plot(density(Data1[, 1]), col = "red", main = "1.energy") plot(density(Data2[, 1]), col = "red", main = "2.energy") plot(density(Data3[, 1]), col = "red", main = "3.energy")
脂肪的分布曲線
其他的指標也可以同理做出來,這里就不一一演示了
我們還可以通過散點圖矩陣,將每組的數(shù)據(jù)關(guān)系表示出來,并且以不同顏色區(qū)分
.更多精彩文章請關(guān)注公眾號:零基礎(chǔ)說科研
總結(jié)
以上是生活随笔為你收集整理的手把手教你R语言做k均值聚类分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你为何会有中年危机感?”40岁失业”是一
- 下一篇: 测试用例-微信消息撤回