楼主: 我是小趴菜
619 0

[数据挖掘工具] R如何实现欧式距离等计算 [推广有奖]

  • 0关注
  • 4粉丝

教授

35%

还不是VIP/贵宾

-

威望
0
论坛币
29650 个
通用积分
380.5350
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
7150 点
帖子
670
精华
0
在线时间
37 小时
注册时间
2022-8-30
最后登录
2023-4-4

楼主
我是小趴菜 发表于 2022-10-27 11:28:05 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

如何计算每列间的距离,假如计算第一列与其他列之间的距离,并求出距离最小的那一组,在R中能否实现欧氏距离和马氏距离的计算?请求解答。

在R中计算距离的函数为dist(),比较直接的用法是dist(x,method="euclidean")即为计算欧式距离,其余可选的参数还有"maximum", "manhattan", "canberra", "binary" ,"minkowski",lz调整这个参数就能得到lz要的距离。

sample code:


data=read.csv(file="E:\\R1.csv",header=T,row.names=1)

mdist=as.matrix(dist(data))

mvec=mdist["504",]


说明:

R最好读.csv文件,直接.xlsx文件经常有问题,所以我把你的excel xlsx转成csv了。dist默认就是算欧式距离,算完后得到一个所有距离的矩阵,假定你需要sample 504(即你的data中第一列编号504的)和其他所有sample的距离(包括和504自己),最后vector mvec中的结果就是需要的。如果你只需要504和其他所有sample的距离,想把和504自己的距离去掉,最后用:

mvec=mdist["504",-(row.names(mdist)=="504")]


马氏距离直接用mahalanobis(data,center=,cov=), 返回是一个vector,即对于每个sample X,计算

   (X-mu)' S.inv (X-mu)

mu就是center或者“均值”,S即cov或者variance-covariance matrix,S.inv是S的逆。我不知道你要用神马center和cov,所以没写。如果你想算的是对于两个sample X,Y,马氏距离为:

   (X-mu)' S.inv (Y-mu)

比如X固定为某个sample,Y应该变化为其他所有sample,要得到一系列的距离,这个也很容易,只要有mu和S,自己做matrix multiplication就好了。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:欧式距离 如何实现 Mahalanobis covariance Euclidean

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-25 12:24