搜索
写经验 领红包
 > 动物

语言聚类分析的应用案例(语言 聚类分析)

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

r语言聚类分析的应用案例(r语言 聚类分析)

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

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

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

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

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

r语言聚类分析的应用案例(r语言 聚类分析)

下面依次对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()的聚类结果对数据集中的每个样本点进行密度估计。

温馨提示:通过以上关于R语言数据挖掘实践——聚类分析的常用函数内容介绍后,相信大家有新的了解,更希望可以对你有所帮助。