美文网首页
【R语言 第2篇】K-means聚类分析流程

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

作者: 晟文刀 | 来源:发表于2016-08-01 09:35 被阅读3941次

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

    聚类方法的逻辑

    客户细分是将全体客户划分为多个分组并刻画特征的过程,使得组内客户高度相似,组间客户差异明显。
    基本逻辑:
    步骤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聚类分析流程

          本文链接:https://www.haomeiwen.com/subject/tuztsttx.html