【R语言 第2篇】K-means聚类分析流程

聚类算法是没用因变量的。
聚类算法有层次聚类、基于划分的聚类、两步聚类法、基于密度的聚类。

聚类方法的逻辑

客户细分是将全体客户划分为多个分组并刻画特征的过程,使得组内客户高度相似,组间客户差异明显。
基本逻辑:
步骤1:从N个观测和K各属性数据开始;
步骤2:计算N各观测两者之间的距离;
步骤3:将相离最近的观测聚为一类,距离远的分为不同类。最终达到组间的距离最大化,组间的距离最大化。

特别注意:

聚类分析前要对数据进行标准化(scale),然后做主成分分析(降维)。

K-means聚类示例

  • 得知当前文件位置
    getwd()
  • 更改文件位置
    setwd("E:/R/……")
  • 这里使用河流化学成份对有害藻类影响的数据集
  • 数据属性说明:
  • season 季节
  • size 河流大小
  • speed 河流速度
  • mxPH 最大PH值
  • mnO2 最小含氧量
  • Cl 平均氯化物含量
  • NO3 平均硝酸盐含量
  • NH4 平均氨含量
  • oPO4 平均正磷酸盐含量
  • PO4 平均磷酸盐含量
  • Chla 平均叶绿素含量
  • algae 有害藻的频率数目
  • 读入数据
    vdata=read.csv("algpre.csv")
  • 加载包,查看数据缺失情况
    library(ggplot2)
    library(dfexplore)
    dfplot(vdata)
    summary(vdata)
  • 层次聚类、基于划分聚类(Kmeans)、基于密度聚类都只可以用于连续变量,
  • 使用mxPH,mnO2,Cl,NO3,NH4,oPO4,PO4,Chla这些属性进行聚类。
    Vdata2<-vdata[,c("mxPH","mnO2","Cl","NO3","NH4","oPO4","PO4","Chla")]
  • 进行kmeans聚类前,需要进行标准化处理,这里使用scale函数进行标准化
    data1=scale(Vdata2)
  • 加载fpc包,使用pamk函数,确定聚类个数
    library(fpc)
    pamk.result=pamk(data1)
    pamk.result$nc
  • 使用stats包中的kmeans函数,iter.max最大迭代次数,可写可不写,但是数据量很大的时候,一定要写防止死机。
    kmd=kmeans(data1,centers = pamk.result$nc,iter.max = 100)
  • 输出聚类结果
    type=kmd$cluster
  • 查看聚类结果分布
    table(type)
  • 聚类中心结果输出
    centerver=kmd$centers
    centerver
  • 将聚类中心结果写入本地excel中,用excel雷达图来描述聚类因子特征,找出每类的优势特征和劣势特征。
    write.csv(centerver,'E:/R/……/centerver.csv')
  • 把聚类结果添加到原始数据中
    data2<-cbind(vdata,type=kmd$cluster)

下篇将补上“主成分分析和因子分析”的实际操作。

你可能感兴趣的:(【R语言 第2篇】K-means聚类分析流程)