机器学习之求最近邻点

来源:互联网 发布:js二维映射 编辑:程序博客网 时间:2024/06/12 01:27

K近邻法使用的模型实际上对应于对特征空间的划分,模型由三个基本的要素:距离度量,K值的选择,分类规则决定

这一次用Python计算Lp范数距离,已知二维空间的三个点,x1=(1,1),x2=(5,1),x3=(4,4)找到p取不同值时,Lp距离下的x1的最近邻点

"""Lp距离下的x1的最近邻点"""import numpy as npx1=np.array([1,1])x2=np.array([5,1])x3=np.array([4,4])#P范数temp=np.zeros(len(x1))for i in range(0,len(x1)):    temp[i]=np.abs(x2[i]-x1[i])Lp=np.max(temp)print('Lp:%f'%Lp)#1范数L1=0for i in range(0,len(x1)):    L1=L1+np.abs(x3[i]-x1[i])print('L1:%f'%L1)#2范数L2=0for i in range(0,len(x1)):    L2=L2+np.abs(x3[i]-x1[i])*np.abs(x3[i]-x1[i])L2=np.sqrt(L2)print('L2:%f'%L2)#3范数L3=0for i in range(0,len(x1)):    L3=L3+np.power(np.abs(x3[i]-x1[i]),3)L3=np.power(L3,1.0/3)print('L3:%f'%L3)#4范数L4=0for i in range(0,len(x1)):    L4=L4+np.power(np.abs(x3[i]-x1[i]),4)L4=np.power(L4,1.0/4)print('L4:%f'%L4)
输出

Lp:4.000000L1:6.000000L2:4.242641L3:3.779763L4:3.567621


求范数有一个通用公式,这里不列出,程序可以写得更语法糖一点,但是为了直观一点,输入三个数,(x1,x2)因为第二维相同,只需要求得无穷范数即可,得到4,于是得到,p等于1或者2时,x2是x1的最邻点,p等于3,或者4时,x3是x1的最邻点。


原创粉丝点击