
R語言的三種聚類方法
對(duì)于R語言,相信做數(shù)據(jù)分析的來說,一定不陌生,那么對(duì)于R語言的三種聚類方法你是否應(yīng)用的全面,下面就說一下?
一、層次聚類
r語言中使用dist(x, method = “euclidean”,diag = FALSE, upper = FALSE, p = 2) 來計(jì)算距離。其中x是樣本矩陣或者數(shù)據(jù)框。method表示計(jì)算哪種距離。method的取值有:
euclidean 歐幾里德距離,就是平方再開方。
maximum 切比雪夫距離
manhattan 絕對(duì)值距離
canberra Lance 距離
minkowski 明科夫斯基距離,使用時(shí)要指定p值
binary 定性變量距離.
定性變量距離: 記m個(gè)項(xiàng)目里面的 0:0配對(duì)數(shù)為m0 ,1:1配對(duì)數(shù)為m1,不能配對(duì)數(shù)為m2,距離=m1/(m1+m2);
diag 為TRUE的時(shí)候給出對(duì)角線上的距離。upper為TURE的時(shí)候給出上三角矩陣上的值。
r語言中使用scale(x, center = TRUE, scale = TRUE) 對(duì)數(shù)據(jù)矩陣做中心化和標(biāo)準(zhǔn)化變換。
如只中心化 scale(x,scale=F) ,
r語言中使用sweep(x, MARGIN, STATS, FUN=”-“, …) 對(duì)矩陣進(jìn)行運(yùn)算。MARGIN為1,表示行的方向上進(jìn)行運(yùn)算,為2表示列的方向上運(yùn)算。STATS是運(yùn)算的參數(shù)。FUN為運(yùn)算函數(shù),默認(rèn)是減法。下面利用sweep對(duì)矩陣x進(jìn)行極差標(biāo)準(zhǔn)化變換
有時(shí)候我們不是對(duì)樣本進(jìn)行分類,而是對(duì)變量進(jìn)行分類。這時(shí)候,我們不計(jì)算距離,而是計(jì)算變量間的相似系數(shù)。常用的有夾角和相關(guān)系數(shù)。
r語言計(jì)算兩向量的夾角余弦:
相關(guān)系數(shù)用cor函數(shù)
2)層次聚類法
層次聚類法。先計(jì)算樣本之間的距離。每次將距離最近的點(diǎn)合并到同一個(gè)類。然后,再計(jì)算類與類之間的距離,將距離最近的類合并為一個(gè)大類。不停的合并,直到合成了一個(gè)類。其中類與類的距離的計(jì)算方法有:最短距離法,最長距離法,中間距離法,類平均法等。比如最短距離法,將類與類的距離定義為類與類之間樣本的最段距離。。。
r語言中使用hclust(d, method = “complete”, members=NULL) 來進(jìn)行層次聚類。
其中d為距離矩陣。
method表示類的合并方法,有:
single 最短距離法
complete 最長距離法
median 中間距離法
mcquitty 相似法
average 類平均法
centroid 重心法
ward 離差平方和法
然后可以用rect.hclust(tree, k = NULL, which = NULL, x = NULL, h = NULL,border = 2, cluster = NULL)來確定類的個(gè)數(shù)。 tree就是求出來的對(duì)象。k為分類的個(gè)數(shù),h為類間距離的閾值。border是畫出來的顏色,用來分類的。
result=cutree(model,k=3) 該函數(shù)可以用來提取每個(gè)樣本的所屬類別
層次聚類,在類形成之后就不再改變。而且數(shù)據(jù)比較大的時(shí)候更占內(nèi)存。
動(dòng)態(tài)聚類,先抽幾個(gè)點(diǎn),把周圍的點(diǎn)聚集起來。然后算每個(gè)類的重心或平均值什么的,以算出來的結(jié)果為分類點(diǎn),不斷的重復(fù)。直到分類的結(jié)果收斂為止。r語言中主要使用kmeans(x, centers, iter.max = 10, nstart = 1,algorithm =c(“Hartigan-Wong”, “Lloyd”,”Forgy”, “MacQueen”))來進(jìn)行聚類。centers是初始類的個(gè)數(shù)或者初始類的中心。iter.max是最大迭代次數(shù)。nstart是當(dāng)centers是數(shù)字的時(shí)候,隨機(jī)集合的個(gè)數(shù)。algorithm是算法,默認(rèn)是第一個(gè)。
使用knn包進(jìn)行Kmean聚類分析
將數(shù)據(jù)集進(jìn)行備份,將列newiris$Species置為空,將此數(shù)據(jù)集作為測(cè)試數(shù)據(jù)集
> newiris <- iris
> newiris$Species <- NULL
Cluster means: 每個(gè)聚類中各個(gè)列值生成的最終平均值
Sepal.Length Sepal.Width Petal.Length Petal.Width
1 5.006000 3.428000 1.462000 0.246000
2 5.901613 2.748387 4.393548 1.433871
3 6.850000 3.073684 5.742105 2.071053
Clustering vector: 每行記錄所屬的聚類(2代表屬于第二個(gè)聚類,1代表屬于第一個(gè)聚類,3代表屬于第三個(gè)聚類)
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[37] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
[73] 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 3 3 3 3 2 3
[109] 3 3 3 3 3 2 2 3 3 3 3 2 3 2 3 2 3 3 2 2 3 3 3 3 3 2 3 3 3 3 2 3 3 3 2 3
[145] 3 3 2 3 3 2
Within cluster sum of squares by cluster: 每個(gè)聚類內(nèi)部的距離平方和
[1] 15.15100 39.82097 23.87947
(between_SS / total_SS = 88.4 %) 組間的距離平方和占了整體距離平方和的的88.4%,也就是說各個(gè)聚類間的距離做到了最大
Available components: 運(yùn)行kmeans函數(shù)返回的對(duì)象所包含的各個(gè)組成部分
[1] “cluster” “centers” “totss” “withinss”
[5] “tot.withinss” “betweenss” “size”
(“cluster”是一個(gè)整數(shù)向量,用于表示記錄所屬的聚類
“centers”是一個(gè)矩陣,表示每聚類中各個(gè)變量的中心點(diǎn)
“totss”表示所生成聚類的總體距離平方和
“withinss”表示各個(gè)聚類組內(nèi)的距離平方和
“tot.withinss”表示聚類組內(nèi)的距離平方和總量
“betweenss”表示聚類組間的聚類平方和總量
“size”表示每個(gè)聚類組中成員的數(shù)量)
創(chuàng)建一個(gè)連續(xù)表,在三個(gè)聚類中分別統(tǒng)計(jì)各種花出現(xiàn)的次數(shù)
> table(iris$Species, kc$cluster)
1 2 3
setosa 0 50 0
versicolor 2 0 48
virginica 36 0 14
根據(jù)最后的聚類結(jié)果畫出散點(diǎn)圖,數(shù)據(jù)為結(jié)果集中的列”Sepal.Length”和”Sepal.Width”,顏色為用1,2,3表示的缺省顏色
> plot(newiris[c(“Sepal.Length”, “Sepal.Width”)], col = kc$cluster)
在圖上標(biāo)出每個(gè)聚類的中心點(diǎn)
〉points(kc$centers[,c(“Sepal.Length”, “Sepal.Width”)], col = 1:3, pch = 8, cex=2)
動(dòng)態(tài)聚類往往聚出來的類有點(diǎn)圓形或者橢圓形。基于密度掃描的算法能夠解決這個(gè)問題。思路就是定一個(gè)距離半徑,定最少有多少個(gè)點(diǎn),然后把可以到達(dá)的點(diǎn)都連起來,判定為同類。在r中的實(shí)現(xiàn)
dbscan(data, eps, MinPts, scale, method, seeds, showplot, countmode)
其中eps是距離的半徑,minpts是最少多少個(gè)點(diǎn)。 scale是否標(biāo)準(zhǔn)化(我猜) ,method 有三個(gè)值raw,dist,hybird,分別表示,數(shù)據(jù)是原始數(shù)據(jù)避免計(jì)算距離矩陣,數(shù)據(jù)就是距離矩陣,數(shù)據(jù)是原始數(shù)據(jù)但計(jì)算部分距離矩陣。showplot畫不畫圖,0不畫,1和2都畫。countmode,可以填個(gè)向量,用來顯示計(jì)算進(jìn)度。用鳶尾花試一試
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡(jiǎn)稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測(cè)分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢(shì)預(yù)判? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,預(yù)測(cè)分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭(zhēng)搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢(shì)性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢(shì)性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢(shì)與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢(shì)變化以及識(shí)別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對(duì)策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場(chǎng)調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場(chǎng)調(diào)研是企業(yè)洞察市場(chǎng)動(dòng)態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場(chǎng)調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動(dòng)力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動(dòng)力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03