2 kmeans用户聚类R
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#代码功能:利用kmeans聚类模型对用户进行分类
#输入数据:第一列:用户ID,第二列:ID对应值
#载入包文件
library(readxl)
library(cluster)
library(klaR)
library(scatterplot3d)
#加载本地数据
data <- as.data.frame(read_xlsx(path = "syy.xlsx"))
df1 <- data[-1]
#定义一个函数,用于绘制聚类树结构
wssplot <- function(data,nc=15,seed=1234){
wss <- (nrow(data)-1) *sum(apply(data,2,var))
for (i in 2:nc) {
set.seed(seed)
wss[i] <- sum(kmeans(data,centers = i)$withinss)
}
plot(1:nc,wss,type="b",pch =1,lwd=0.5,lty=4,cex=2,col="blue",xlab="number of clusters",ylab="squares errors")
}
#对输入数据进行标准化
df <- scale(df1)
#基于图形得出K值
wssplot(df)
#设置随机数
set.seed(1234)
#调用包得出聚类结果,k=3,取之前观测结果
fit.km<- kmeans(df,3,nstart = 25)
cl<- kmeans(df,3,nstart = 25)
#绘制一个3D的聚类散点图
sort(cl$cluster)
scatterplot3d(df[,1],df[,2],df[,3],highlight.3d=TRUE,color =cl$cluster,pch = 8,col.axis = "Violet", col.grid = "Violet",xlab = "brand",ylab = "media",zlab = "ec")
#重新初始化一个窗口
dev.new()
#画出一个二维的聚类图
plot(data[,c(1:2)],col = fit.km$cluster)
#结果输出到本地
data <- as.data.frame(data)
data$cluster1 <- fit.km$cluster
write.csv(data,file = "clusterresult1.csv")