本内容为【科研私家菜】R语言机器学习与临床预测模型系列课程
你想要的R语言学习资料都在这里, 快来收藏关注【科研私家菜】
01 欧式距离(Euclidean Distance)
欧式距离,即欧几里得距离,是最常见的两点之间的距离表示法。
aa=matrix(rnorm(15,0,1),c(3,5))
dist(aa,p=2)
02 曼哈顿距离(Manhattan Distance)
曼哈顿距离,是欧几里得空间中两点之间的线段在坐标轴上的投影的距离的和。曼哈顿距离也称为城市街区距离(City Block distance)。
library(tidyverse)
library(factoextra)
library(cluster)
set.seed(1234)
ss <- sample(1:50, 15)
df <- USArrests[ss, ] %>%
as_tibble()
df_scaled <- scale(df)
# 使用dist()计算欧氏距离,选取前三个数据进行查看
dist_euc <- dist(df_scaled, method = "euclidean")
round(as.matrix(dist_euc)[1:3, 1:3], 1)
#> 1 2 3
#> 1 0.0 3.3 1.0
#> 2 3.3 0.0 2.6
#> 3 1.0 2.6 0.0
03 皮尔逊相关距离(Pearson correlation distance)
# 使用 factoextra 包中的函数 get_dist() 计算
dist_cor <- get_dist(df_scaled, method = "pearson")
round(as.matrix(dist_cor)[1:3, 1:3], 1)
#> 1 2 3
#> 1 0.0 1.2 0.5
#> 2 1.2 0.0 1.4
#> 3 0.5 1.4 0.0
04 斯皮尔曼相关距离(Spearman correlation distance)
05 切比雪夫距离 ( Chebyshev Distance )
06 马氏距离(Mahalanobis Distance)
马氏距离又称为数据的协方差距离,它是一种有效的计算两个未知样本集的相似度的方法。马氏距离的结果也是将数据投影到N(0,1)区间并求其欧式距离,与标准化欧氏距离不同的是它认为各个维度之间不是独立分布的,所以马氏距离考虑到各种特性之间的联系。
07 距离算法包philentropy
philentropy包实现了46个不同距离算法和相似性度量,通过不同数据的相似度比较,为基础研究提供了科学基础。philentropy包,为聚类、分类、统计推断、拟合优度、非参数统计、信息理论和机器学习提供了核心的计算框架,支持基于单变量或者多变量的概率函数的计算。
philentropy包主要包括了2种度量的计算方法,距离度量和信息度量。
philentropy项目github地址:https://github.com/HajkD/philentropy
philentropy包支持的46种不同距离算法:
philentropy包支持的46种距离算法
distance() # 计算距离
getDistMethods() # 获得距离算法列表
dist.diversity()# 概率密度函数之间的距离差异
estimate.probability()# 从计数向量估计概率向量
lin.cor()# 线性相关性判断
distance(x, method = "euclidean", p = NULL, test.na = TRUE, unit = "log", est.prob = NULL)
library(magrittr)
# 查看iris数据集
> head(iris)
dat2<-head(iris[,-5])
# 距离矩阵
> distance(dat2)
# 下三角距离矩阵
> dist(dat2)
# dist.diversity()函数,用来计算所有距离的值。由于有一些距离有对于数据集本身的要求,所以我们需要构建一个能适应所有距离算法的数据集。
# 生成数据集,2个点,10个维度
> P <- 1:10/sum(1:10)
> Q <- 20:29/sum(20:29)
> x <- rbind(P,Q)
dist.diversity(x,p=2)
关注R小盐,关注科研私家菜(VX_GZH: SciPrivate),有问题请联系R小盐。让我们一起来学习 人工智能与算法
网友评论