温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

R语言的聚类方法介绍

发布时间:2021-09-01 16:09:46 来源:亿速云 阅读:514 作者:chen 栏目:大数据

本篇内容介绍了“R语言的聚类方法介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、层次聚类

1)距离和相似系数

r语言中使用dist(x, method = “euclidean”,diag = FALSE, upper = FALSE, p = 2)  来计算距离。其中x是样本矩阵或者数据框。method表示计算哪种距离。method的取值有:

  • euclidean 欧几里德距离,就是平方再开方

  • maximum 切比雪夫距离

  • manhattan 绝对值距离

  • canberra Lance 距离

  • minkowski 明科夫斯基距离,使用时要指定p值

  • binary 定性变量距离.

定性变量距离: 记m个项目里面的 0:0配对数为m0 ,1:1配对数为m1,不能配对数为m2,距离=m1/(m1+m2);

diag 为TRUE的时候给出对角线上的距离。upper为TURE的时候给出上三角矩阵上的值。

r语言中使用scale(x, center = TRUE, scale = TRUE) 对数据矩阵做中心化和标准化变换。

如只中心化 scale(x,scale=F) ,

r语言中使用sweep(x, MARGIN, STATS, FUN=”-“, …)  对矩阵进行运算。MARGIN为1,表示行的方向上进行运算,为2表示列的方向上运算。STATS是运算的参数。FUN为运算函数,默认是减法。下面利用sweep对矩阵x进行极差标准化变换

R语言的聚类方法介绍

有时候我们不是对样本进行分类,而是对变量进行分类。这时候,我们不计算距离,而是计算变量间的相似系数。常用的有夹角和相关系数。

r语言计算两向量的夹角余弦:

R语言的聚类方法介绍

相关系数用cor函数

2)层次聚类法

层次聚类法。先计算样本之间的距离。每次将距离最近的点合并到同一个类。然后,再计算类与类之间的距离,将距离最近的类合并为一个大类。不停的合并,直到合成了一个类。其中类与类的距离的计算方法有:最短距离法,最长距离法,中间距离法,类平均法等。比如最短距离法,将类与类的距离定义为类与类之间样本的最段距离。。。

r语言中使用hclust(d, method = “complete”, members=NULL) 来进行层次聚类。

其中d为距离矩阵。

method表示类的合并方法,有:

  • single 最短距离法

  • complete 最长距离法

  • median 中间距离法

  • mcquitty 相似法

  • average 类平均法

  • centroid 重心法

  • ward 离差平方和法

  • R语言的聚类方法介绍

    R语言的聚类方法介绍


然后可以用rect.hclust(tree, k = NULL, which = NULL, x = NULL, h = NULL,border = 2,  cluster = NULL)来确定类的个数。 tree就是求出来的对象。k为分类的个数,h为类间距离的阈值。border是画出来的颜色,用来分类的。

R语言的聚类方法介绍

二、动态聚类k-means

层次聚类,在类形成之后就不再改变。而且数据比较大的时候更占内存。

动态聚类,先抽几个点,把周围的点聚集起来。然后算每个类的重心或平均值什么的,以算出来的结果为分类点,不断的重复。直到分类的结果收敛为止。r语言中主要使用kmeans(x,  centers, iter.max = 10, nstart = 1,algorithm =c(“Hartigan-Wong”,  “Lloyd”,”Forgy”,  “MacQueen”))来进行聚类。centers是初始类的个数或者初始类的中心。iter.max是***迭代次数。nstart是当centers是数字的时候,随机集合的个数。algorithm是算法,默认是***个。

使用knn包进行Kmean聚类分析

将数据集进行备份,将列newiris$Species置为空,将此数据集作为测试数据集

R语言的聚类方法介绍

在数据集newiris上运行Kmean聚类分析, 将聚类结果保存在kc中。在kmean函数中,将需要生成聚类数设置为

R语言的聚类方法介绍

Cluster means: 每个聚类中各个列值生成的最终平均值

R语言的聚类方法介绍

Clustering vector: 每行记录所属的聚类(2代表属于第二个聚类,1代表属于***个聚类,3代表属于第三个聚类)

R语言的聚类方法介绍

Within cluster sum of squares by cluster: 每个聚类内部的距离平方和

R语言的聚类方法介绍

(between_SS / total_SS = 88.4 %)  组间的距离平方和占了整体距离平方和的的88.4%,也就是说各个聚类间的距离做到了***

Available components: 运行kmeans函数返回的对象所包含的各个组成部分

R语言的聚类方法介绍

(“cluster”是一个整数向量,用于表示记录所属的聚类

“centers”是一个矩阵,表示每聚类中各个变量的中心点

“totss”表示所生成聚类的总体距离平方和

“withinss”表示各个聚类组内的距离平方和

“tot.withinss”表示聚类组内的距离平方和总量

“betweenss”表示聚类组间的聚类平方和总量

“size”表示每个聚类组中成员的数量)

创建一个连续表,在三个聚类中分别统计各种花出现的次数

R语言的聚类方法介绍

根据***的聚类结果画出散点图,数据为结果集中的列”Sepal.Length”和”Sepal.Width”,颜色为用1,2,3表示的缺省颜色

R语言的聚类方法介绍

在图上标出每个聚类的中心点

R语言的聚类方法介绍

三、DBSCAN

动态聚类往往聚出来的类有点圆形或者椭圆形。基于密度扫描的算法能够解决这个问题。思路就是定一个距离半径,定最少有多少个点,然后把可以到达的点都连起来,判定为同类。在r中的实现

R语言的聚类方法介绍

其中eps是距离的半径,minpts是最少多少个点。 scale是否标准化(我猜) ,method  有三个值raw,dist,hybird,分别表示,数据是原始数据避免计算距离矩阵,数据就是距离矩阵,数据是原始数据但计算部分距离矩阵。showplot画不画图,0不画,1和2都画。countmode,可以填个向量,用来显示计算进度。用鸢尾花试一试

R语言的聚类方法介绍

“R语言的聚类方法介绍”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI