加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

R语言,三种聚类(一)

(2014-05-22 22:34:25)
标签:

r语言

聚类

kmean

hclust

dbscan

转载自:http://my.oschina.net/u/1047640/blog/202714#OSC_h4_2

一、距离和相似系数

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进行极差标准化变换

1 >center <</code>- sweep(x, 2apply(x, 2mean)) #在列的方向上减去均值。
2 >R <</code>- apply(x, 2max- apply(x,2,min  #算出极差,即列上的最大值-最小值
3 >x_star <</code>- sweep(center, 2R, "/"       #把减去均值后的矩阵在列的方向上除以极差向量
1 >center <</code>- sweep(x, 2apply(x, 2min)) #极差正规化变换
2 >R <</code>- apply(x, 2max- apply(x,2,min)
3 >x_star <</code>- sweep(center, 2R, "/")


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

1 <</code>- scale(x, center = F, scale = T)/sqrt(nrow(x)-1)
2 <</code>- t(y) %*% y

相关系数用cor函数

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有