打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
R语言数据挖掘实践——聚类分析的常用函数

  

  使用R语言可以轻松实现聚类分析,stats、cluster、fpc和mclust是常用的四个聚类分析软件包。

  stats主要包含一些基本的统计函数,如用于统计计算和随机数生成等;

  cluster专用于聚类分析,包含很多聚类相关的函数及数据集;

  fpc含有若干聚类算法函数,如固定点聚类、线性回归聚类、DBSCAN聚类等;

  mclust主要用于处理基于高斯混合模型,通过EM算法实现的聚类、分类以及密度估计等问题。

  

  下面依次对4种算法的核心函数进行介绍

  kmeans函数

  K-均值算法在R语言中实现的核心函数为kmeans(),来源于stats软件包,该函数的基本格式为“

  kmeans(x, centers, iter.max=10, nstart=1, algorithm=c("Hartigan-Wong","Lloyd","For-gy","MacQueen"))

  其中x为进行聚类分析的数据集;centers为预设类别数k;iter.max为迭代的最大值,且默认值为10;nstart为选择随机起始中心点的次数,默认取1;而参数algorithm则提供了4种算法选择,默认Hartigan-Wong算法。

  pam函数

  K-中心点算法用R实现的核心函数为cluster软件包中pam(),该函数的基本格式为:

  pam(x, k, diss=inherits(x, "dist"), metric="euclidean",medoids=NULL, stand=FALSE, cluster.only=FALSE, do.swap=TRUE, keep.diss=!diss && !cluster.only && n < 100, keep.data=!diss && !cluster.only, pamonce=FALSE, trace.lev=0)

  其中x、k分别表示待处理数据及类别数;metric参数用于选择样本点间距离测算的方式,可供选择的有”euclidean“与”manhattan“;medoids默认取NULL,即由软件选择大专证初始中心点样本,也可以认定一个k维向量来指定初始点;stand用于选择对数据进行聚类前是否需要进行标准化;cluster.only用于选择是否仅获取个样本所归属的类别(Cluster vector)这一项聚类结果,若选择TRUE,则聚类过程效率更高;keep.data选择是否在聚类结果中保留数据集。

  dbscan函数

  dbscan()函数用于实现DBSCAN聚类算法,其函数格式如下:

  dbscan(data,eps,MinPts=5,scale=FALSE,method=c("hybrid","raw","dist"),seeds=TRUE,showplot=FALSEcountmode=NULL)

  其中,data为待聚类数据集或距离矩阵;eps为考察每一样本点是否满足密度要求时,所划定考察邻域的半径;MinPts为密度阈值,当考察点eps邻域内的样本点数大于或等于MinPts时,该点才被认为是核心对象,否则为边缘点;scale用于选择是否在聚类前先对数据集进行标准化;method参数用于选择如何看待data,具体的,”hybrid“表示data为距离矩阵,”raw“表示data为原始数据集,且不计算其距离矩阵,”dist“也将data视为原始数据集,但计算局部聚类矩阵;showplot用于选择是否输出聚类结果示意图,取值为0、1、2,分别表示不绘图、每次迭代都绘图、仅对子迭代过程绘图。

  hclust、cutree及rect.hclust函数

  这三个函数都来源于stats软件包,在系谱聚类过程中发挥着各自不同的作用。

  核心函数为hclust(),用来实现系谱聚类算法,其基本格式十分简单,仅含有三个参数:

  hclust(d, method="complete",members=NULL)

  其中,d为待处理数据集样本间的距离矩阵,可用dist()函数计算得到;method参数用于选择聚类的具体算法,可供选择的有ward、single及complete等7种,默认选择complete方法;参数members用于指出每个待聚类样本点/簇是由几个单样本构成,如共有5个待聚类样本点/簇,当我们设置members=rep(2,5)则表明每个样本点/簇分别是有2个单样本聚类的结果,该参数默认值为NULL,表示每个样本点本身即为单样本。

  而cutree()函数则可以对hclust()函数的聚类结果进行剪枝,即选择输出指定类别数的系谱聚类结果,其格式为:

  cutree(tree, k=NULL, h=NULL)

  其中,tree为hclust()的聚类结果,参数k与h用于控制选择输出的结果。

  rect.hclust()函数可以在plot()函数形成的系谱图中将指定类别中的样本分支用方框表示出来,十分有助于直观分析聚类结果,其基本格式为:

  rect.hclust(tree, k=NULL, which=NULL, x=NULL, h=NULL, border=2, cluster=NULL)

  Mclust、mclustBIC、mclust2Dplot及densityMclust函数

  这4个函数来源于mclust软件包,其中Mclust()函数为进行EM聚类的核心函数,基本格式为:

  Mclust(data, G=NULL, modeNames=NULL, prior=NULL, control=emControl(), initialization=NULL, warn=FALSE, ...)

  其中,data用于放置待处理数据集,G为预设类别数,默认值为1~9,即由软件根据BIC的值在1~9中选择最优值;modeNames用于设定模型类别,该参数和G一样也可由函数自动选取最优值。

  mclustBIC()函数的参数设置与Mclust基本一致,用于获取数据集所对应的参数化高斯混合模型的BIC值,而BIC值的作用即是评价模型的优劣,BIC值越高模型越优。mclust2Dplot()函数可根据EM算法所生成参数对二维数据制图。而densityMclust()函数利用Mclust()的聚类结果对数据集中的每个样本点进行密度估计。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
聚类分析简单介绍(附R对应函数介绍)
RStudyNote8-cluster
R语言聚类算法之期望最大化聚类(Expectation Maximization Algorithm...
你不仅用了一个'假'的kmeans, 还用了一个'假'的hclust
R绘图笔记 | 热图绘制
ConsensusClusterPlus, 一步到位的一致性聚类!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服