使用python计算马哈顿距离、切比雪夫距离、欧式距离、夹角余弦

欧式距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值代销中体现差异
余弦距离更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分类区分兴趣的相似度和差异
同时修正了用户间可能存在的度量标准不统一的问题(因为余弦距离对绝对数值不敏感)

#将该字典中的age值累加

scientists=({'name':'Alan Turing','age':105},
            {'name':'Dennis Ritchie','age':76},
            {'name':'John wan Neudada','age':114},
            {'name':'Guida wan Rossion','age':61},)
from functools import reduce
def add(accumulator,value):
    sum=accumulator+value['age']
    return sum
reduce(add,scientists,0)

#用户输入一个三位自然数,计算并输出器百、十、个位上的数字

number = input("please input a number:")
ints=int(number)
b=ints//100
print("百位",b)
print("十位",(ints-b*100)//10)
print("个位",ints%10)

#输入三角形两边和夹角,求第三边

import math
x=input("输入两边及其夹角")
a,b,theta=map(float,x.split())
print(a,b,theta)
c=math.sqrt(a**2+b**2-2*a*b*math.cos(theta*math.pi/180))
print("第三边长",c)

#计算两点的马哈顿距离 \x1-x2+|y1-y2\

#d=\x1-x2\+\y1-y2\
x=input("输入两个点的坐标(x1,y1,x2,y2)")
x1,y1,x2,y2=x.split(',')
distance=abs(int(x1)-int(x2))+abs(int(y1)-int(y2))
print("曼哈顿距离:",distance)

#计算两点间的欧式距离

#d=sqrt((x1-x2)^2+(y1-y2)^2)
import math
x=input("输入两个点的坐标(x1,y1,x2,y2)")
x1,y1,x2,y2=x.split(',')
distance=math.sqrt((int(x1)-int(x2))**2+(int(y1)-int(y2))**2)
print("欧式距离:",distance)

#计算切比雪夫距离

#d=max(\x1-x2\,\y1-y2\)
import math
x=input("输入两个点的坐标(x1,y1,x2,y2)")
x1,y1,x2,y2=x.split(',')
distance=max(abs(int(x1)-int(x2)),abs(int(y1)-int(y2)))
print("切比雪夫距离:",distance)

#夹角余弦

#二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦
#cos=((x1*x2)+(y1*y2))/(sqrt(x1^2+x2^2))*(sqrt(y1^2+y2^2))
import math
x=input("输入两个点的坐标(x1,y1,x2,y2)")
x1,y1,x2,y2=x.split(',')
x1,y1,x2,y2=int(x1),int(y1),int(x2),int(y2)
distance=((x1*x2)+(y1+y2))/(math.sqrt(x1^2+x2^2))*math.sqrt(y1^2+y2^2)
print("余弦为:",distance)
发布了20 篇原创文章 · 获赞 10 · 访问量 5461

猜你喜欢

转载自blog.csdn.net/weixin_43784880/article/details/99654272