Here is analysis:
# ?AirPassengers
# ?kmeans
head(AirPassengers)
## [1] 112 118 132 129 121 135
# 重构数据
ap.data <- t(mapply(function(i){AirPassengers[(12*(i-1)+1):(i*12)]},1:12))
# 标准化曲线
ap.data.std <- t(apply(ap.data,1,function(x){(x-min(x))/(max(x)-min(x))}))
# 使用kmeans函数进行聚类,假定分成两类
kOut <- kmeans(ap.data.std, centers=2, nstart=20, iter.max=200)
# 聚类统计情况如下
table(kOut$cluster)
##
## 1 2
## 8 4
# 设置类标签
ap.data.std <- cbind(ap.data.std, kOut$cluster)
# 画出曲线图
plot(1:12,1:12,col='white',ylim=c(0,1),xlab="年份",ylab="标准化值")
for(i in 1:nrow(ap.data.std))
{
lines(1:12,ap.data.std[i,1:12],col=ap.data.std[i,13]+2)
}
legend(1,1,c("类1","类2"),lty=1,col=c("blue","green "))