本文展示了4中距离计算方法:欧氏距离、曼哈顿距离、切比雪夫距离、夹角余弦距离。
另外:向量可以自己根据需要来构造,本文的比较杂乱,是由特定要求计算得来的
例如:A=[0.1,0.2,0.3,0.4,0.5],B=[0.005,0.006,0.007,0.008,0.009]

1.获取一些随机均匀分布的点,作为向量A
a=numpy.random.randint(-20,high=160,size=(1,30))   #随机均匀分布
a=a/1000
A=[]#只要30个点,并且保留小数点后3位
for i in range(30):for b in a:c='%.3f' %b[i]A.append(float(c))
print(A)

2.构造向量B(这个计算方法内部使用,可忽略)
power=[0.005,0.006,0.007,0.008,0.009]
for n in range(5):B = []for i in A:random2 = numpy.random.randn()  #随机正态分布a = i+random2/1000*power[n]a='%.6f' %aB.append(float(a))# print(B)vector1 = mat(A)vector2 = mat(B)

3.几种距离计算方法
print("第" + str(n+1) + "次距离计算")# 1.欧式距离ou = numpy.sqrt(numpy.sum(numpy.square(vector1 - vector2)))ou1.append(ou)print('欧氏距离:', ou)# 2.曼哈顿距离manhadun = sum(abs(vector1 - vector2))man.append(manhadun)print("曼哈顿距离:", manhadun)# 3.切比雪夫距离qbxf = abs(vector1 - vector2).max()qie.append(qbxf)print("切比雪夫距离:", qbxf)# 4.夹角余弦距离n1 = np.squeeze(np.asarray(vector1))n2 = np.squeeze(np.asarray(vector2))cos1 = dot(n1, n2) / (linalg.norm(n1) * linalg.norm(n2))cos.append(cos1)print("夹角余弦距离:", cos1)print("-----------------------------")

4.把距离归一化,然后画出来
g1=ou1/max(ou1)
print("欧氏距离归一化:",g1)g2=man/max(man)
print("曼哈顿距离归一化:",g2)g3=qie/max(qie)
print("切比雪夫距离归一化:",g3)g4=cos/max(cos)
print("余弦距离归一化:",g4)# 1.欧氏距离:蓝色线
plot(power, g1, 'b.')
plot(power[:5], g1[:5],color='b')# 2.曼哈顿距离:红色线
plot(power, g2, 'r.')
plot(power[:5],g2[:5],color='r')# 3.切比雪夫距离:黄色线
plot(power, g3, 'y.')
plot(power[:5], g3[:5],color='y')# 4.夹角余弦距离:黑色线
plot(power, g4, 'k.')
plot(power[:5], g4[:5],color='k')title('Vector distance')
plt.show()

完整代码:

import numpy as np
import numpy
from numpy import *
from PIL import Image
from pylab import *
from sklearn import preprocessing
from scipy.spatial.distance import pdist
from itertools import chaina=numpy.random.randint(-20,high=160,size=(1,30))   #随机均匀分布
a=a/1000
A=[]
for i in range(30):for b in a:c='%.3f' %b[i]A.append(float(c))
print(A)ou1=[]
man = []
qie=[]
cos=[]
power=[0.005,0.006,0.007,0.008,0.009]
for n in range(5):B = []for i in A:random2 = numpy.random.randn()  #随机正态分布a = i+random2/1000*power[n]a='%.6f' %aB.append(float(a))# print(B)vector1 = mat(A)vector2 = mat(B)print("第" + str(n+1) + "次距离计算")# 1.欧式距离ou = numpy.sqrt(numpy.sum(numpy.square(vector1 - vector2)))ou1.append(ou)print('欧氏距离:', ou)# 2.曼哈顿距离manhadun = sum(abs(vector1 - vector2))man.append(manhadun)print("曼哈顿距离:", manhadun)# 3.切比雪夫距离qbxf = abs(vector1 - vector2).max()qie.append(qbxf)print("切比雪夫距离:", qbxf)# 4.夹角余弦距离n1 = np.squeeze(np.asarray(vector1))n2 = np.squeeze(np.asarray(vector2))cos1 = dot(n1, n2) / (linalg.norm(n1) * linalg.norm(n2))cos.append(cos1)print("夹角余弦距离:", cos1)print("-----------------------------")g1=ou1/max(ou1)
print("欧氏距离归一化:",g1)g2=man/max(man)
print("曼哈顿距离归一化:",g2)g3=qie/max(qie)
print("切比雪夫距离归一化:",g3)g4=cos/max(cos)
print("余弦距离归一化:",g4)# 1.欧氏距离:蓝色线
plot(power, g1, 'b.')
plot(power[:5], g1[:5],color='b')# 2.曼哈顿距离:红色线
plot(power, g2, 'r.')
plot(power[:5],g2[:5],color='r')# 3.切比雪夫距离:黄色线
plot(power, g3, 'y.')
plot(power[:5], g3[:5],color='y')# 4.夹角余弦距离:黑色线
plot(power, g4, 'k.')
plot(power[:5], g4[:5],color='k')title('Vector distance')
plt.show()

结果显示:


由于获取的向量为随机值,所以每次运行得到的图都是不一样的

向量的几种距离计算方法相关推荐

  1. 论文阅读:基于多模态词向量的语句距离计算方法

    论文信息 华阳. 基于多模态词向量的语句距离计算方法[D].哈尔滨工业大学,2018. 1.主要工作 简述语句间的距离问题:自然语言处理任务是度量文本间的距离:不同阶段语言学习的难度可以抽象为距离,本 ...

  2. 图神经网络中可能用到的11种距离, 小结

    转自 | 深度学习与图网络 在图表示学习,图分类,节点分类,链接预测,时常常需要估算不同样本之间的相似性度量(SimilarityMeasurement),这时通常采用的方法就是计算样本间的" ...

  3. 曼哈顿算法公式_距离计算方法总结

    计算推荐对象的内容特征和用户模型中兴趣特征二者之间的相似性是推荐算法中一个关键部分 ,相似性的度量可以通过计算距离来实现 在做很多研究问题时常常需要估算不同样本之间的相似性度量(Similarity ...

  4. 曼哈顿算法公式_距离计算方法总结 | Public Library of Bioinformatics

    在做分类时常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间的"距离"(Distance).采用什么样的方法计算 ...

  5. 数据科学中常见的9种距离度量方法

    选自towardsdatascience 作者:Maarten Grootendorst 机器之心编译 编辑:陈萍 在数据挖掘中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离.在本 ...

  6. 【机器学习基础】常见的9种距离度量方法,内含欧氏距离、切比雪夫距离等

    作者|机器之心编译 来源|机器之心 在数据挖掘中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离.在本文中,数据科学家 Maarten Grootendorst 向我们介绍了 9 种 ...

  7. 样本间距离计算方法总结

    样本间相似度/距离计算方法总结 标签(空格分隔): 机器学习 闵可夫斯基距离 Minkowski距离,也成欧式距离,计算方法为: dist(X,Y)=(∑ni=1|xi−yi|p)1p\begin{e ...

  8. Mahout中相似度距离计算方法总结

    在分类聚类算法,推荐系统中,常要用到两个输入变量(通常是特征向量的形式)距离的计算,即相似性度量.不同相似性度量对于算法的结果,有些时候,差异很大.因此,有必要根据输入数据的特征,选择一种合适的相似性 ...

  9. 几种距离公式的总结思考

    几种距离公式的总结思考 @(微积分) 常用的有: 点到平面的距离公式 点到直线距离公式 异面直线距离公式 点到平面的距离公式 点(x0,y0,z0)(x_0,y_0,z_0)到平面Ax+By+Cz+D ...

最新文章

  1. sql server 2008数据导入Oracle方法
  2. Oracle的逻辑结构(表空间、段、区间、块)——Oracle数据块(一)
  3. 工作169:删除操作
  4. cocos2dx迷你地图
  5. Github 平均 Star 为 3558 的机器学习开源项目,你错过了哪些?
  6. 第十三周项目1-数组大折腾(一)
  7. c#如何取得事件注册的方法
  8. ndk编译libiconv
  9. java 对象转map,map转对象
  10. 计算机网络VLAN间路由,交换机必学知识 VLAN间路由理论指导
  11. 实践“鱼塘养鱼论”,不断养鱼和捕鱼
  12. Java学习----习题练习
  13. 调查 ESXi/ESX 上的虚拟机文件锁定 (10051)
  14. Win7开自带的虚拟WIFI
  15. python蓝牙模块教程_通过蓝牙将HC05蓝牙模块与python连接时出错
  16. iOS自定义身份证键盘
  17. 佛说,是我们自己苦了自己
  18. 【视频】什么是梯度下降?用线性回归解释和R语言估计GARCH实例
  19. python 读取excel表格数据,然后写入word模板,批量生成
  20. web 前端图片优化之--图片压缩上传

热门文章

  1. 《痞子衡嵌入式半月刊》 第 14 期
  2. 计算机对下列几个部件访问速度最快,武汉理工大学材料学院复试计算机题目
  3. 菜鸟在线技术篇之数据类型及转换
  4. c++中拷贝构造函数、默认无参构造函数、析构函数的理解
  5. Flink知识点大全总结
  6. git 设置用户名,密码,邮箱
  7. java二级级联_java二级联动实现问题
  8. select下拉菜单实现二级联动
  9. Android调试神器stetho使用详解和改造 1
  10. Tomcat启动闪退