R包rdist计算pairwise distance

最近想要计算pairwise distance,使用嵌套循环可以解决,但是当矩阵太大的时,就计算慢很多(0.5h到几天的差别)。

1. rdist包介绍

默认使用数字数据,如果使用字符,需要自定义函数,不过可能使运行减慢很多:
rdist包可以计算pairwise distance,支持的距离计算方法有:

"euclidean": sqrt(sum_i((v_i - w_i)^2))
"minkowski": (sum_i(|v_i - w_i|^p))^{1/p}
"manhattan": sum_i(|v_i-w_i|)
"maximum" or "chebyshev": max_i(|v_i-w_i|)
"canberra": sum_i(|v_i-w_i|/(|v_i|+|w_i|))
"angular": arccos(cor(v, w))
"correlation": sqrt((1-cor(v, w))/2)
"absolute_correlation": sqrt((1-|cor(v, w)|^2))
"hamming": sum_i(v_i != w_i)/sum_i(1)
"jaccard": sum_i(v_i != w_i)/sum_i(v_i != 0 or w_i != 0)
Any function that defines a distance between two vectors.
2. 数字型和自定义函数计算字符型距离
## 数字型例子
require(rdist)
a=matrix(c(1,2,3,4,2,3,3,4,3,3,3,3),3)
1-pdist(a,metric="hamming")
1-pdist(a,metric="jaccard")## 字符型自定义函数(定义剔除NN行的相似性比例)
b=t(matrix(c("CC","DD","CC","DD","NN","AA","CC","NN","BB","CC","DD","AA"),2,byrow = T))
b
myfun=function(v,w){idx=intersect(which(v!="NN"),which(w!="NN"))x1=v[idx]x2=w[idx]#x2[8]=10dis=sum(x1==x2)/length(x1)return(dis)  } pdist(t(b),metric = myfun)[,1] [,2]
[1,]  1.0  0.5
[2,]  0.5  1.0b[,1] [,2]
[1,] "CC" "CC"
[2,] "DD" "NN"
[3,] "CC" "BB"
[4,] "DD" "CC"
[5,] "NN" "DD"
[6,] "AA" "AA"
3. Python包sklearn中调用pairwise_distances
from sklearn.metrics.pairwise import pairwise_distances
##### pairwise distance example in sklearn
data = pd.read_csv("filename.hmp.txt", header=0, sep="\t") ##  hmp genotype data
print(data.shape)
print(data.iloc[1:5,10:14])data[data=="AA"]=1
data[data=="GG"]=2
data[data=="CC"]=3
data[data=="TT"]=4data[data=="AG"]=5
data[data=="GA"]=5
data[data=="AC"]=6
data[data=="CA"]=6data[data=="AT"]=7
data[data=="TA"]=7
data[data=="TC"]=8
data[data=="CT"]=8data[data=="TG"]=9
data[data=="GT"]=9
data[data=="CG"]=10
data[data=="GC"]=10data[data=="NN"]=11def cal_dis2(n1,n2): ## default Xx1=n1[(n1 !=11) & (n2 != 11)]x2=n2[(n1 !=11) & (n2 != 11)]x3=sum(x1==x2)/len(x1)return x3d=pairwise_distances(e1.values.T, metric=cal_dis2,n_jobs=10)

出现的问题是:

1.服务器不能调用指定的cpu个数
2.自定义函数简单,传入pairwise_distances函数时仍然计算很慢,反而默认的方法计算很快。

仅为记录。

参考:
https://www.rdocumentation.org/packages/fields/versions/13.3/topics/rdist
https://scikit-learn.org/0.15/modules/generated/sklearn.metrics.pairwise.pairwise_distances.html

R包rdist、Python sklearn计算pairwise distance相关推荐

  1. python - sklearn 计算F1

    python - sklearn 计算F1 因为最近写的分类模型需要性能评价 ,常用的分类性能评价有 查准率.召回率.准确率.F1 分类问题的常用的包 sklearn ,下面对F1所用的方法进行介绍 ...

  2. python - sklearn 计算精准率(Precision)

    python - sklearn 计算查准率 因为最近写的分类模型需要性能评价 ,常用的分类性能评价有 查准率.召回率.准确率.F1 分类问题的常用的包 sklearn ,下面对查准率所用的方法进行介 ...

  3. python - sklearn 计算准确率

    python - sklearn 计算准确率 因为最近写的分类模型需要性能评价 ,常用的分类性能评价有 准确率.查准率.召回率.F1 分类问题的常用的包 sklearn ,下面对准确率所用的方法进行介 ...

  4. [Python+sklearn] 计算混淆矩阵 confusion_matrix()函数

    python sklearn 计算混淆矩阵 confusion_matrix()函数 参考sklearn官方文档:sklearn.metrics.confusion_matrix. 功能: 计算混淆矩 ...

  5. python包numpy_NumPy Python科学计算软件包的终极指南

    python包numpy NumPy (pronounced "numb pie") is one of the most important packages to grasp ...

  6. github访问不了_用ssh套娃翻到大陆公网给校园内网服务器装R包以及使用GitHub

    碎碎念... 某学校的服务器装R包真把我搞吐了! 最近我用的学校某计算服务器平台除了ssh登录,竟然连curl www.baidu.com都给封了,离谱 好,既然你给我留ssh还让我用,那我就用ssh ...

  7. 无网络服务器(linux ubuntu),pip安装python科学计算所有需要包(packages)

    无网络服务器(linux ubuntu),pip安装python科学计算所有需要包(packages) # 在windows上打开anaconda,进入环境tab页,在base环境处单击,然后点开te ...

  8. Spark 和 Python.sklearn:使用随机森林计算 feature_importance 特征重要性

    前言 在使用GBDT.RF.Xgboost等树类模型建模时,往往可以通过feature_importance 来返回特征重要性,本文以随机森林为例介绍其原理与实现.[ 链接:机器学习的特征重要性究竟是 ...

  9. 基于阿里云函数计算实现需要用到超大依赖包的 Python 无服务器计算

    文章目录 引言 一.阿里云函数计算是什么? 开发流程 函数计算的触发调用 函数计算运行实例的生命周期 二.示例应用的架构及简介 三.具体开发部署步骤所遇到的坑和~~避坑指南~~ 坑1. 超大依赖包的部 ...

最新文章

  1. AI金融若不解决这些问题,等于在制造新的不可解问题
  2. GDCM:排序图片的测试程序
  3. python基础(part4)--语句
  4. jboss eap_HawtIO在JBoss EAP上(第二部分)
  5. 前端小知识点(1):undefined和null区别
  6. 怎么编写java_程序员学编程第一步:手把手教你开发第一个Java程序
  7. java调用lua 路径_luacom打开中文路径的Word文件
  8. C#用正则表达式对IP进行排序
  9. javaweb学习总结七(XML语言作用、语法)
  10. php 设置跨域axios,vue2.0中proxyTable用axios进行跨域请求的设置方法
  11. 7.4读写锁(ReadWriteLock)
  12. excel文件快速撤销工作表保护
  13. 面试官系列:前端高频面试题汇总 | Vue面试题
  14. python保存对话框_python打开文件对话框的方法
  15. 如何将HL7转换为XML
  16. [渝粤教育] 西南科技大学 中国传统文化概论 在线考试复习资料2021版
  17. java项目日志打印总结
  18. iReport PDF合并示例
  19. win10平台下搭建python-pcl环境
  20. 全志A10平板上的ubuntu终极安装版,支持HDMI和平板本机LCD,全新内核硬浮点加速,堪比i3 XP平台...

热门文章

  1. Jupyter怎么切换conda环境
  2. 概率图模型--CLM算法
  3. Safe Computations
  4. iApp 的销售模式的重要性?
  5. 如何提高linux ssh连接速度
  6. System Verilog的约束constraint
  7. 如果你不想继续穷下去,就看看吧,想想吧
  8. 数据库应用课程设计 教学管理系统 大学编程作业(TUST 天津科技大学 2022 年)
  9. 利用System.IO.Compression实现文件压缩和解压缩
  10. python外包凹多边形生成_Python实现图片查找轮廓、多边形拟合、最小外接矩形代码...