熱線電話:13121318867

登錄
首頁精彩閱讀R語言使用密度聚類筆法處理數據
R語言使用密度聚類筆法處理數據
2018-01-18
收藏

R語言使用密度聚類筆法處理數據

說明

除了使用距離作為聚類指標,還可以使用密度指標來對數據進行聚類處理,將分布稠密的樣本與分布稀疏的樣本分離開。DBSCAN是最著名的密度聚類算法。

操作

將使用mlbench包提供的仿真數據
library(mlbench)
library(fpc)

使用mlbench庫繪制Cassini問題圖:

set.seed(2)
p = mlbench.cassini(500)
plot(p$x)

根據數據密度完成聚類:

ds = dbscan(dist(p$x),0.2,2,countmode = NULL,method = "dist")
> ds
dbscan Pts=500 MinPts=2 eps=0.2
        1   2   3
seed  200 200 100
total 200 200 100
繪制聚類結果散點圖,屬于不同簇的數據點選用不的顏色:
plot(ds,p$x)

根據聚簇標號繪制的彩色散點圖
調用dbscan來預測數據點可能被劃分到那個簇,在樣例中,首先在矩陣P中處理三個輸入值:
生成y矩陣
y = matrix(0,nrow = 3,ncol = 2)
y[1,] = c(0,0)
y[2,] = c(0,-1.5)
y[3,] = c(1,1)
y
[,1] [,2]
[1,]    0  0.0
[2,]    0 -1.5
[3,]    1  1.0

預測數據點屬于那個簇:
predict(ds,p$x,y)
[1] 3 1 2

原理

基于密度的聚類算法利用了密度可達以及密度相連的特點,因而適用于處理非線性聚類問題。當探討密度聚類算法的處理過程前,我們要知道基于密度的聚類算法通常需要考慮兩個參數,eps和MinPts,其中eps為最大領域半徑,MinPts是領域半徑范圍內的最小點數。

確定好這兩個參數后,如果給定對象其領域范圍內的樣本點個數大于MinPts,則稱該對象為核心點。

如果一個對象其領域半徑范圍內的樣本點個數小于MinPts,但緊挨著核心點,則稱該對象為邊緣點。

如果P對象的eps領域范圍內樣本點個數大于MinPts,則稱該對象為核心對象。

進一步,我們還要定義兩點間密度可達的概念,給定兩點p和q,如果p為核心對象,且q在p的eps鄰域內,則稱p直接密度可以達q。如果存在一系列的點,p1,p2,…,pn。且p1 = q,pn = p,根據Eps和MinPts的值,當1<=i<=n,pi + 1 直接密度可以達pi,則稱p的一般密度可以達q。

DBSCAN處理過程:

1.隨機選擇一個點p

2.給定Eps和MinPts的條件下,獲得所有p密度可達的點

3.如果p是核心對象,則p和所有p密度可達的點被標記成一個簇,如果p是一個邊緣點,找不到密度可達點,則將其標記為噪聲。接著處理其它點。

4.重復這個過程,直到所有的點被處理。

本例使用dbscan算法聚類Cassini數據集,將可達距離設置為0.2,最小可達點個數設置為2,計算進度設為NULL,使用距離矩陣做為計算依據。經過算法處理,數據被劃分成三個簇,每個簇的大小分別為200,200,100.通過聚簇的結果示意圖也可以發現Cassini圖被不同顏色區分開來。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢