R语言画聚类图因频谱图横纵坐标标是数字开头,总是有个X如何去掉

51CTO旗下网站
R语言的三种聚类方法
这篇文章主要介绍R语言的三种聚类方法。
作者:莫扎特来源:| 01:10
一、层次聚类
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语言计算两向量的夹角余弦:
相关系数用cor函数
2)层次聚类法
层次聚类法。先计算样本之间的距离。每次将距离最近的点合并到同一个类。然后,再计算类与类之间的距离,将距离最近的类合并为一个大类。不停的合并,直到合成了一个类。其中类与类的距离的计算方法有:最短距离法,最长距离法,中间距离法,类平均法等。比如最短距离法,将类与类的距离定义为类与类之间样本的最段距离。。。
r语言中使用hclust(d, method = &complete&, members=NULL) 来进行层次聚类。
其中d为距离矩阵。
method表示类的合并方法,有:
single 最短距离法
complete 最长距离法
median 中间距离法
mcquitty 相似法
average 类平均法
centroid 重心法
ward 离差平方和法
然后可以用rect.hclust(tree, k = NULL, which = NULL, x = NULL, h = NULL,border = 2,
cluster = NULL)来确定类的个数。 tree就是求出来的对象。k为分类的个数,h为类间距离的阈值。border是画出来的颜色,用来分类的。
二、动态聚类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置为空,将此数据集作为测试数据集
在数据集newiris上运行Kmean聚类分析, 将聚类结果保存在kc中。在kmean函数中,将需要生成聚类数设置为
Cluster means: 每个聚类中各个列值生成的最终平均值
Clustering vector: 每行记录所属的聚类(2代表属于第二个聚类,1代表属于第一个聚类,3代表属于第三个聚类)
Within cluster sum of squares by cluster: 每个聚类内部的距离平方和
(between_SS / total_SS = 88.4 %)
组间的距离平方和占了整体距离平方和的的88.4%,也就是说各个聚类间的距离做到了最大
Available components: 运行kmeans函数返回的对象所包含的各个组成部分
(&cluster&是一个整数向量,用于表示记录所属的聚类
&centers&是一个矩阵,表示每聚类中各个变量的中心点
&totss&表示所生成聚类的总体距离平方和
&withinss&表示各个聚类组内的距离平方和
&tot.withinss&表示聚类组内的距离平方和总量
&betweenss&表示聚类组间的聚类平方和总量
&size&表示每个聚类组中成员的数量)
创建一个连续表,在三个聚类中分别统计各种花出现的次数
根据最后的聚类结果画出散点图,数据为结果集中的列&Sepal.Length&和&Sepal.Width&,颜色为用1,2,3表示的缺省颜色
在图上标出每个聚类的中心点
三、DBSCAN
动态聚类往往聚出来的类有点圆形或者椭圆形。基于密度扫描的算法能够解决这个问题。思路就是定一个距离半径,定最少有多少个点,然后把可以到达的点都连起来,判定为同类。在r中的实现
其中eps是距离的半径,minpts是最少多少个点。 scale是否标准化(我猜) ,method
有三个值raw,dist,hybird,分别表示,数据是原始数据避免计算距离矩阵,数据就是距离矩阵,数据是原始数据但计算部分距离矩阵。showplot画不画图,0不画,1和2都画。countmode,可以填个向量,用来显示计算进度。用鸢尾花试一试【编辑推荐】【责任编辑: TEL:(010)】
大家都在看猜你喜欢
关注聚焦头条热点聚焦
24H热文一周话题本月最赞
讲师:33119人学习过
讲师:27104人学习过
讲师:305186人学习过
精选博文论坛热帖下载排行
本书是程序员面试宝典系列中的一册,也是上一本《程序员面试宝典》的姊妹书。本书对程序设计面试中Java常见的题型和常用解答技巧进行了介绍...
订阅51CTO邮刊R语言中k均值聚类对数据量的要求,我有一个数据量大概200多万样本,变量七个,在确定k值的时候,总是提醒数据量太大如何破?
[问题点数:40分]
R语言中k均值聚类对数据量的要求,我有一个数据量大概200多万样本,变量七个,在确定k值的时候,总是提醒数据量太大如何破?
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2016年3月 其他开发语言大版内专家分月排行榜第二2014年10月 其他开发语言大版内专家分月排行榜第二2013年7月 Windows专区大版内专家分月排行榜第二2013年5月 其他开发语言大版内专家分月排行榜第二2013年4月 其他开发语言大版内专家分月排行榜第二2012年11月 其他开发语言大版内专家分月排行榜第二2012年6月 其他开发语言大版内专家分月排行榜第二2011年11月 其他开发语言大版内专家分月排行榜第二2011年9月 其他开发语言大版内专家分月排行榜第二2010年6月 其他开发语言大版内专家分月排行榜第二2007年4月 其他开发语言大版内专家分月排行榜第二2006年12月 其他开发语言大版内专家分月排行榜第二2006年11月 其他开发语言大版内专家分月排行榜第二2005年6月 其他开发语言大版内专家分月排行榜第二2003年5月 其他开发语言大版内专家分月排行榜第二2003年3月 其他开发语言大版内专家分月排行榜第二
2013年11月 其他开发语言大版内专家分月排行榜第三2013年8月 其他开发语言大版内专家分月排行榜第三2012年12月 其他开发语言大版内专家分月排行榜第三2012年9月 其他开发语言大版内专家分月排行榜第三2012年8月 其他开发语言大版内专家分月排行榜第三2012年5月 其他开发语言大版内专家分月排行榜第三2011年12月 其他开发语言大版内专家分月排行榜第三2010年12月 其他开发语言大版内专家分月排行榜第三2010年9月 其他开发语言大版内专家分月排行榜第三
2016年11月 Delphi大版内专家分月排行榜第二
2011年10月 其他开发语言大版内专家分月排行榜第三2010年8月 其他开发语言大版内专家分月排行榜第三2007年5月 其他开发语言大版内专家分月排行榜第三
匿名用户不能发表回复!|推荐这篇日记的豆列
&&&&&&&&&&&&
&(1370人关注)
&(13人关注)博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)推荐这篇日记的豆列
&&&&&&&&&&&&

我要回帖

更多关于 纵坐标 的文章

 

随机推荐