R语言 - K均值聚类


> library(plyr)
> library(ggplot2)
> library(cluster)
> library(lattice)
> library(graphics)
> library(grid)
> library(gridExtra)
> library(cluster)
#加载cluster包中ruspini数据
>data(ruspini)
#将ruspini数据定义为data
>data <- ruspini
#将data数据可视化
>plot(data)
R语言 - K均值聚类
#生成15个数值型空矢量,定义为wss
>wss<-numeric(15)
#针对质心的个数k循环执行若干次k均值分析,其中k为1到15。对于每个k,选项nstart=25用于指定重复执行25次k均值聚类算法,每次以k个随机初始质心开始。与每个k均值分析对应的WSS值被存储在wss矢量中。
>for (k in 1:15) wss[k]<-sum(kmeans(data,centers = k,nstart = 25)$withinss)
#将wss矢量可视化,选择斜率变小的点作为k值(簇的个数) - 发现WSS曲线的“肘”
>plot(1:15,wss,type = "b",xlab = "x",ylab = "y")
R语言 - K均值聚类
#将数据data进行k均值聚类运算
>km = kmeans(data,4,nstart = 25)
#将km数据集内的centers数据转化为dataframe带入函数kmdf
>kmdf <- data.frame(km$centers)
#将kmdf内的点做图层
>p <- ggplot(data = NULL,mapping = aes(x=kmdf$x,y=kmdf$y))
R语言 - K均值聚类
#将kmdf内的点显示大小为9,颜色为"0000ff"
>p <- p+geom_point(aes(size = 9, color = "0000ff"))
R语言 - K均值聚类
#将data内的数据点做图层
>p <- p+geom_point(aes(x=data$x,y=data$y))
R语言 - K均值聚类