最近正在做客户细分模型,利用K-means将客户信息划分成多个组并进行特征刻画使得同一簇内的客户相似度较高,不同簇间的相似度比较低。目前只做到了客户信息聚类。
- 数据准备
原本的数据是一些客户的注册基本信息大部分为离散型数据因此考虑到K-means模型对数值类的数据处理效果要比文本类要好因此将注册信息进行重新编排,用ID类型的数据代替原本的数据,比如注册地点:东莞市<——>01,广州市<——>03 R工具包
library(kernlab)
library(magrittr)
library(fpc)K-means实现
#利用pamk找k,在用kmeans找labels
data <- read.csv('.~/quantize_companyfeature.csv')
data$regisCode <- as.numeric(data$regisCode)
data$regCapital <- as.numeric(data$regCapital)
data$checkDate <- as.numeric(data$checkDate
data[is.na(data)] <- 0
pamk.result <- pamk(data,criterion="multiasw",usepam=FALSE,critout=TRUE)
summary(pamk.result)
pamk.result$nc
kc <- kmeans(data, pamk.result$nc)
kc$cluster
out=as.character(kc$cluster)#将out转化为字符向量
write(out,file='C:/Users/Administrator/Desktop/xy/output.txt',1,,)
combin_cluster <- read.csv('C:/Users/Administrator/Desktop/xy/quantize_companyfeature.csv')
combin_cluster <- data.frame(combin_cluster,kc$cluster)
write.csv(combin_cluster,"C:/Users/Administrator/Desktop/xy/combin_cluster.csv",row.names=FALSE)- 绘图
选取两个特征作为坐标绘制二维图
plot(data[c("regisCode","checkDate")],col = kc$cluster)
points(kc$centroids[,1],kc$centroids[,2],col = 1:2,pch = 8,cex = 2)