層次聚類分析案例(二)

之前的筆記:
聚類介紹:點這里
層次聚類分析案例(一)

案例二:亞馬遜雨林燒毀情況

1999~2010年拐云,33000平方英里(85500平方公里),即2.8%的亞馬遜雨林被燒毀。這一結(jié)果是被NASA領(lǐng)導的研究項目發(fā)現(xiàn)的通惫。該研究的主要目的是衡量森林樹冠下暗火的蔓延程度。該研究發(fā)現(xiàn)火災(zāi)燒毀的森林比用于農(nóng)耕而砍伐的森林面積大很多混蔼。然而履腋,森林燒毀情況和火災(zāi)之間沒有建立起聯(lián)系。

如何建立火災(zāi)和森林燒毀情況之間的聯(lián)系惭嚣,需要基于NASA的Aqua衛(wèi)星上的大氣紅外探測儀(AIRS)設(shè)備的濕度數(shù)據(jù)遵湖。火災(zāi)頻率與夜間的低濕度相吻合晚吞,低濕度使得地表的低強度火災(zāi)能夠持續(xù)燃燒延旧。

準備工作

為了進行層次聚類,我們應(yīng)該使用采集于亞馬遜雨林(1999~2010年)的數(shù)據(jù)集槽地。

第1步:收集和描述數(shù)據(jù)

該任務(wù)使用名為NASAUnderstory的數(shù)據(jù)集迁沫。該數(shù)據(jù)以標準格式存儲在名為NASAUnderstory.csv的CSV格式的文件中。其中包含64行數(shù)據(jù)和32個變量闷盔。數(shù)據(jù)在這里

非數(shù)值型數(shù)據(jù)如下:Overstory Species 弯洗;Labels 。其余為數(shù)值型變量逢勾。
具體實施步驟
以下為實現(xiàn)細節(jié)牡整。

第2步:探索數(shù)據(jù)

讓我們探索數(shù)據(jù)并理解變量間的關(guān)系。我們從導入名為NASAUnderstory.csv的文件開始溺拱,將該數(shù)據(jù)存儲到NASA數(shù)據(jù)框中:

NASA = read.csv("Data/NASAUnderstory.csv",header = T)

下一步逃贝,我們應(yīng)該獲取每一個物種列標簽的長版本:

NASA.lab = NASA$Labels

之后,輸出NASA.lab數(shù)據(jù)框迫摔。這包含了每一個物種的完整名字沐扳。

結(jié)果如下:


接下來把整個數(shù)據(jù)內(nèi)容傳遞給NASA數(shù)據(jù)框:

NASA = NASA[,-32]

輸出NASA數(shù)據(jù)框可以把整體的數(shù)據(jù)內(nèi)容顯示出來。

NASA

結(jié)果如下:


第3步:轉(zhuǎn)換數(shù)據(jù)

接下來進行數(shù)據(jù)歸一化句占。scale()函數(shù)將中心化并拉伸所有先前提到的數(shù)值型變量列:

NASAscale <- scale(NASA[,3:31])

這會拉伸縮NASA數(shù)據(jù)框中第3~31列的所有數(shù)值型變量沪摄。

輸出NASAscale數(shù)據(jù)框可以顯示所有的拉伸和中心化后的數(shù)值。

NASAscale

結(jié)果如下:


為了將一個向量編碼為一個因子纱烘,需要使用factor函數(shù)杨拐。如果自變量排序是TRUE,因子等級將被排序擂啥。這里哄陶,我們將OverstorySpecies列作為一個值傳給factor函數(shù):

rownames(NASAscale) = as.factor(NASA$Overstory.Species)

as.factor()返回列名的數(shù)據(jù)框。

輸出數(shù)據(jù)框rownames(NASAscale)將顯示OverstorySpecies列的所有值:

rownames(NASAscale)

結(jié)果如下:


第4步:訓練和評估模型

下一步是訓練模型哺壶。首先計算距離矩陣屋吨。dist()函數(shù)用來計算并返回距離矩陣蜒谤,使用特定的距離度量來計算數(shù)據(jù)矩陣中各行間的距離。這里使用的距離度量可以是歐式距離至扰、最大距離鳍徽、曼哈頓距離、堪培拉距離渊胸、二進制距離旬盯,或閔可夫斯基距離。這里的距離度量使用歐式距離翎猛。歐式距離計算兩個向量間的距離為sqrt(sum((x_i-y_i)^2))胖翰。結(jié)果存儲在一個新的數(shù)據(jù)框dist1中。

dist1 <- dist(NASAscale, method = "euclidean")

下一步是使用Ward方法進行聚類切厘。hclust()函數(shù)對一組不同的n個對象進行聚類分析萨咳。第一階段,每個對象被指派給它自己的簇疫稿。之后每個階段培他,算法迭代聚合兩個最相似的簇。這個過程不斷持續(xù)直到只剩一個簇遗座。hclust()函數(shù)要求我們以距離矩陣的形式提供數(shù)據(jù)舀凛。dist1數(shù)據(jù)框被傳入。默認使用全鏈接進行聚類途蒋。此外還可以使用不同的聚集方法猛遍,包括ward.D、ward.D2号坡、single懊烤、complete和average。

clust1 <- hclust(dist1,method = "ward.D")

clust1

調(diào)用clust1宽堆,結(jié)果顯示了聚集方法腌紧、計算距離的方法,以及對象的數(shù)量畜隶。結(jié)果如下:


第5步:繪制模型

plot()函數(shù)是繪制R對象的通用函數(shù)壁肋。這里,plot()函數(shù)用來繪制系統(tǒng)樹圖:

plot(clust1,labels=NASA[,2], cex=0.5,

     xlab="",ylab="Distance",main="Clustering for NASA Understory Data")

結(jié)果如下:


rect.hclust()函數(shù)會圍繞系統(tǒng)樹圖的某些枝干繪制矩形以強調(diào)對應(yīng)的簇籽慢。系統(tǒng)樹圖首先在某個等級上被剪切浸遗,之后在選定的枝干上繪制長方形。

clust1作為一個對象傳入函數(shù)嗡综,同時傳入的還有需要形成的簇的數(shù)量乙帮。

rect.hclust(clust1,k=2)

結(jié)果如下:


cuts()函數(shù)基于期望的簇數(shù)量或者切割高度切割這棵樹中的節(jié)點到不同的組杜漠。這里极景,clust1被當作一個對象傳入該函數(shù)察净,同時傳入期望的簇數(shù)量。

cuts = cutree(clust1,k=2)

cuts

結(jié)果如下:


第6步:改進模型

首先需要載入以下包:

library(vegan)

vegan包最初被社會學和植被生態(tài)學家廣泛使用盼樟。它包括排序方法氢卡、多樣性分析以及其他功能。其中一些流行的工具包括多樣性分析晨缴、物種豐富度模型译秦、物種豐富度分析、差異分析等击碗。

下一步是通過使用jaccard距離方法訓練模型來改進模型筑悴。第一步是使用vegdist()函數(shù)計算距離矩陣。該函數(shù)計算成對元素的距離稍途,并把結(jié)果存儲在一個新的數(shù)據(jù)框dist1中阁吝。jaccard系數(shù)衡量有限樣本集的相似性,該系數(shù)通過兩集合的交集大小除以兩集合的并集大小計算得來械拍。

dist1 <- vegdist(NASA[,3:31],method="jaccard", upper=T)

下一步是使用Ward方法進行聚類突勇。使用hclust()函數(shù):

clust1 <- hclust(dist1,method = "ward.D")

clust1

調(diào)用clust1顯示了使用的聚集方法、距離度量方法和對象的個數(shù)坷虑。結(jié)果如下:


plot()函數(shù)是繪制R語言對象的通用函數(shù):

plot(clust1,labels=NASA[,2],cex=0.5,

     xlab=" ",ylab="Distance",main="Clustering for NASA Understory Data")

clust1數(shù)據(jù)框作為對象傳入該函數(shù)甲馋。cex給出了縮放數(shù)值,通過該值可以把文字和符號相對放大到默認值迄损。
結(jié)果如下:


clust1對象被作為一個對象傳入函數(shù)定躏,同時傳入的還有聚類的數(shù)量:

rect.hclust(clust1,k=2)

結(jié)果如下:


cuts()函數(shù)能夠基于期望的組數(shù)量或者切割的高度將樹切割到不同的組:

cuts = cutree(clust1,k=2)

cuts

結(jié)果如下:


使用判別函數(shù)繪制兩個類的解。

clusplot()函數(shù)能夠繪制二維的聚類圖海蔽。這里共屈,把NASA數(shù)據(jù)框作為對象傳入。

clusplot(pam(NASAscale,2))

結(jié)果如下:


使用判別函數(shù)繪制兩個類的解党窜。

為了區(qū)分給定的類別拗引,plotcluster()函數(shù)使用映射函數(shù)進行繪圖。不同的映射方法包括經(jīng)典判別坐標幌衣、展現(xiàn)平均值和協(xié)方差結(jié)構(gòu)區(qū)別的方法矾削、非對稱方法(從混合類中分離出同質(zhì)類)、本地基于近鄰的方法和基于魯棒協(xié)方差矩陣的方法豁护。

clusplot()函數(shù)可以畫出二維的聚類圖哼凯。這里把NASA的數(shù)據(jù)框作為對象傳入:

clusplot(NASA,cuts,color = TRUE,shade = TRUE, labels = 2,lines = 0,

         main = "NASA Two Cluster Plot, Ward's Method, First two PC")

結(jié)果如下:


接下來,對NASAscale數(shù)據(jù)框用t()函數(shù)進行轉(zhuǎn)換:

library(fpc)

NASAtrans=t(NASAscale)

下一步是使用閔可夫斯基距離方法改進模型楚里。第一步是計算距離矩陣断部。這里使用dist()函數(shù)。

閔可夫斯基距離經(jīng)常在變量為比例尺度以及絕對零值的情況下使用班缎。

dist1 <- dist(NASAtrans, method="minkowski",p=3)

下一步是使用Ward方法進行聚類蝴光。使用hclust()方法她渴。

clust1 <- hclust(dist1,method="ward.D")

clust1

調(diào)用clust1函數(shù)顯示了使用的聚集方法、距離度量方法和對象的個數(shù)蔑祟,結(jié)果如下:


plot()函數(shù)是繪制R對象的通用函數(shù)趁耗。這里,plot()函數(shù)被用來繪制系統(tǒng)樹圖:

plot(clust1, labels=NASA.lab[1:29], cex=1,
     xlab="",ylab="Distance",main="Clustering for NASA Understory Data")

結(jié)果如下:


rect.hclust()函數(shù)會圍繞系統(tǒng)樹圖的某些枝干繪制矩形以強調(diào)對應(yīng)的簇疆虚。系統(tǒng)樹圖首先在某個等級上被剪切苛败,之后在選定的枝干上繪制長方形。

clust1對象被當作一個對象傳入該函數(shù)径簿,同時被傳入的還有聚類的個數(shù):

rect.hclust(clust1,k=3)

結(jié)果如下:


cuts()函數(shù)能夠基于期望的簇數(shù)量或者切割的高度將樹切分到三個不同的組罢屈。這里傳入clust1對象和聚類的個數(shù)。

cuts = cutree(clust1,k=3)

cuts

結(jié)果如下:


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末篇亭,一起剝皮案震驚了整個濱河市儡遮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌暗赶,老刑警劉巖鄙币,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蹂随,居然都是意外死亡十嘿,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門岳锁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绩衷,“玉大人,你說我怎么就攤上這事激率】妊啵” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵乒躺,是天一觀的道長招盲。 經(jīng)常有香客問我,道長嘉冒,這世上最難降的妖魔是什么曹货? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮讳推,結(jié)果婚禮上顶籽,老公的妹妹穿的比我還像新娘。我一直安慰自己银觅,他們只是感情好礼饱,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般镊绪。 火紅的嫁衣襯著肌膚如雪久脯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天镰吆,我揣著相機與錄音,去河邊找鬼跑慕。 笑死万皿,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的核行。 我是一名探鬼主播牢硅,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼芝雪!你這毒婦竟也來了减余?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤惩系,失蹤者是張志新(化名)和其女友劉穎位岔,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體堡牡,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡抒抬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了晤柄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片擦剑。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖芥颈,靈堂內(nèi)的尸體忽然破棺而出惠勒,到底是詐尸還是另有隱情,我是刑警寧澤爬坑,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布纠屋,位于F島的核電站,受9級特大地震影響盾计,放射性物質(zhì)發(fā)生泄漏巾遭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一闯估、第九天 我趴在偏房一處隱蔽的房頂上張望灼舍。 院中可真熱鬧,春花似錦涨薪、人聲如沸骑素。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽献丑。三九已至末捣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間创橄,已是汗流浹背箩做。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留妥畏,地道東北人邦邦。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像醉蚁,于是被迫代替她去往敵國和親燃辖。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容