library(xlsx)
library(kmeans)
data<-read.xlsx2('D://数据//分时率.xlsx',1,header=TRUE)
clur<-kmeans(x=data,centers = 6,nstart = 500)
clur$size #每一类的数量
clur$centers #浏览每个类的中心
time<-c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24)
plot(time,clur$centers[1,],col=1,type = 'l',xlim=c(1,24),ylim=c(0,1),xlab = '时间',ylab = '集货率',main='分六类分时集货率')
lines(time,clur$centers[2,],col=2,lty = 1)
lines(time,clur$centers[3,],col=3,lty=1)
lines(time,clur$centers[4,],col=4,lty = 1)
lines(time,clur$centers[5,],col=5,lty=1)
lines(time,clur$centers[6,],col=6,lty = 1)
legend('topleft',c('1,1','2,56','3,102','4,120','5,20','6,31'),lty = c(1,1,1,1,1,1),col=1:6)
以上是用R做kmeans聚类并画图的相应代码,之前已经用python做了相同的工作,这次聚类的数据一样,结果也一样,可以说在意料之中了。之前对R不太熟悉,这次就当做简单的练手。
在做kmeans聚类时,二者的速度都很快,在画图时R甚至比Python更简单一些,聚类完之后,可以直接取每一类中心点的数据,然后画图,当然Python也可以,接下来需要研究一下网上的相关代码。