? ? ? AP聚類算法是目前十分火的一種聚類算法,它解決了傳統的聚類算法的很多問題。不僅簡單,而且聚類效果還不錯。這里,把前兩天學習的AP算法在R語言上面的模擬,將個人筆記拿出來與大家分享一下,不談AP算法的原理,只初步的講一下應用,更多請關注下期。
APClusting in R
相似矩陣的計算
negDistMat(x, sel=NA, r=1, method="euclidean", p=2)
expSimMat(x, sel=NA, r=2, w=1, method="euclidean", p=2)
相似度公式:s=exp(-(d/w)^r)
linSimMat(x, sel=NA, w=1, method="euclidean", p=2)
相似度公式:s=max(0,1-d/w)
corSimMat(x, sel=NA, r=1, signed=TRUE, method="pearson")
相似度公式:s=(x^T y)/(|x| |y|)
linKernel(x, sel=NA, normalize=FALSE)
x若是向量,則取其所有值進行矩陣求取。若是矩陣和數據框,則取行作為sample。
如:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?
?????????????
向量?????????????????????????????????????????????????????????????????????????????? 矩陣
AP聚類函數
①Apcluster()進行Ap過程
apcluster(x,p)
x是相似矩陣
p是指定簇時候的界定值
②同時求相似矩陣和執行Ap
apcluster(s, x)
s是相似矩陣的求取函數
其中,negDistMat()可以指定參數,如negDistMat(r=2)
聚類返回結果APResult
我們作一個二維的數據集的聚類
?
?
?
從圖中我們可以看到
a.樣本個數?????????????????????????????????
b.迭代次數????????????????????????????????? res@it
c.簇的個數以及簇的成員?????
d.簇的界定值 Input preference大于它就被選為簇中心
e.簇中心 Exemplar
等;
res@sim?????????? 相似矩陣
對結果進行繪圖
plot函數
apcluster包里面對plot函數進行了重寫,plot(x,y)
x是聚類結果,y是數據集
?
由上圖我們也可以看到,兩個簇中心是30[0.2796125? 0.7300467]、36[0.7023239 ?0.4018984]
?
?
heatmap函數
a.
heatmap(x)
x是聚類結果
?
由上圖可以看出各點之間的相似度
b.
heatmap(sim),畫相似矩陣的熱點圖,如圖
heatmap(res@sim[1:10,1:10])
由于數據較多,我們只取前10行以及前10列進行繪圖
?
由上圖可以看出各點之間的相似對,以及他們之間的層次關系.