一、距离和相似系数
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, 2, apply(x, 2, mean)) #在列的方向上减去均值。
2
>R <</code>- apply(x, 2, max) - apply(x,2,min) #算出极差,即列上的最大值-最小值
3
>x_star <</code>- sweep(center, 2, R, "/") #把减去均值后的矩阵在列的方向上除以极差向量
1
>center <</code>- sweep(x, 2, apply(x, 2, min)) #极差正规化变换
2
>R <</code>- apply(x, 2, max) - apply(x,2,min)
3
>x_star <</code>- sweep(center, 2, R, "/")
有时候我们不是对样本进行分类,而是对变量进行分类。这时候,我们不计算距离,而是计算变量间的相似系数。常用的有夹角和相关系数。
r语言计算两向量的夹角余弦:
1
y <</code>- scale(x, center = F, scale = T)/sqrt(nrow(x)-1)
2
C <</code>- t(y) %*% y
相关系数用cor函数
相关文章
- 推荐系统[一]:超详细知识介绍,一份完整的入门指南,解答推荐系统相关算法流程、衡量指标和应用,以及如何使用jieba分词库进行相似推荐
- 基于 Hugging Face Datasets 和 Transformers 的图像相似性搜索
- 基于 Hugging Face Datasets 和 Transformers 的图像相似性搜索
- 全网最详细的ChatGPT注册-你和ChatGPT的距离只差这篇文章
- UVA 11796- Dog Distance(计算几何_求最大距离和最小距离之差)
- Java正则表达式,多项式的单独度和系数
- 使用BFS计算源和顶点之间的距离
- Sitecore 个性化 - 近距离和过于个人化?
- Artifactory插件中的模件工件和依赖关系数据
- 汉明距离图片相似度比较