美文网首页
R语言机器学习与临床预测模型45--那些N种距离计算算法

R语言机器学习与临床预测模型45--那些N种距离计算算法

作者: 科研私家菜 | 来源:发表于2022-04-22 15:42 被阅读0次

    本内容为【科研私家菜】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小盐。让我们一起来学习 人工智能与算法

    相关文章

      网友评论

          本文标题:R语言机器学习与临床预测模型45--那些N种距离计算算法

          本文链接:https://www.haomeiwen.com/subject/nehxertx.html