机器学习之求最近邻点

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

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

"""
Lp距离下的x1的最近邻点
"""
import numpy as np
x1=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=0
for i in range(0,len(x1)):
    L1=L1+np.abs(x3[i]-x1[i])
print('L1:%f'%L1)
#2范数
L2=0
for 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=0
for 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=0
for 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.000000
L1:6.000000
L2:4.242641
L3:3.779763
L4:3.567621


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


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值