统计学习方法笔记(一)-k近邻算法原理及python实现

输入:训练集
$$T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}$$
其中,$x_i\in \mathcal {X} \subseteq \mathcal{R^n}$为实例的特征向量,$y_i \in \mathcal {Y}=\{c_1,c_2,...,c_K\}$为实例的类别,$i=1,2,...,N$;实例特征向量$x$;

输出:实例$x$所属的类$y$.
(1)根据给定的距离度量,在训练集$T$中找出与$x$最邻近的$k$个点,涵盖这$k$个点的$x$的邻域基座$N_k(x)$;
(2)在$N_k(x)$中根据分类决策规则(如多数表决)决定$x$的类别$y$:
$$y=\arg \max_{cj} \sum_{x_i \in N_k(x)} I(y_i=c_i),i=1,2,...,N;j=1,2,...,K$$

上式中,$I$为指数函数,即当$y_i=c_i$时$I$为1,否则$I$为0.

注:当$k=1$时,$k$近邻法又称为最近邻算法,它是$k$近邻算法的特殊情况。

 

import math
from itertools import combinations

#定义距离
def Distance(x,y,p=2):
    if len(x)==len(y) and len(x)>1:
        sum=0
        for i in range(len(x)):
            sum+=math.pow(abs(x[i]-y[i]),p)
        return math.pow(sum,1/p)
    else:
        return 0

 

转载于:https://www.cnblogs.com/RoseVorchid/p/11426093.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值