输入banner图图片脚本导航/分类

基于密度聚类的DBSCAN算法

,pi,length.out=100) y1 <- sin(x1) + 0.1*rnorm(100) x2 <- 1.5+ seq(0,pi,length.out=100) y2 <- cos(x2) + 0.1*rnorm(100) data <- data.frame(c(x1,x2),c(y1,y2)) names(data) <- c(x,y) qplot(data$x, data$y)

 

技术分享

 

用密度聚类DBSCAN方法,可以看到聚类效果如下:

library(ggplot2)
p <- ggplot(data,aes(x,y))
library(fpc)
model2 <- dbscan(data,eps=0.6,MinPts=4)
p + geom_point(size=2.5, aes(colour=factor(model2$cluster)))+theme(legend.position=top)

技术分享

同样,请读者看下k-means的聚类效果。

# 用K均值聚类
model1 <- kmeans(data,centers=2,nstart=10)
library(ggplot2)
p <- ggplot(data,aes(x,y))
p + geom_point(size=2.5,aes(colour=factor(model1$cluster)))+theme(legend.position=top)

技术分享

 所以,不同的数据集和场景,需要运用不同的聚类算法。

 

下面介绍该算法的工作原理。

 

技术分享