六、手写实现KNN算法

本文深入探讨了K-近邻(KNN)算法,包括其语义原理和数据原理。通过计算样本间的欧式距离,选取最近的k个邻居来决定新样本的分类。文中还给出了详细的Python代码实现,涵盖了距离计算、排序和分类预测的过程。然而,KNN算法存在存储和计算上的挑战,如需大量存储空间和较高的计算复杂度。
摘要由CSDN通过智能技术生成

语义原理:

k-近邻算法(k-Nearest Neighbor,KNN)。

对于一个样本数据集合,其由特征数据和分类数据组成,特征数据和分类数据间存在对应关系,将其视为训练样本集;对于只存在特征数据的新数据,将其与训练样本集中特征进行比较,然后用算法提取样本集中特征最相似数据(最近邻)的分类标签,作为新数据的标签,以完成分类任务。

数据原理:

​ 计算两个向量点xA和xB之间的距离(欧式距离公式):

代码实现:

import numpy as np
import operator


"""
实现步骤:
1.计算已知类别数据集中的点与当前点之间的距离
2.按照距离递增次序排序
3.选取与当前点距离最小的k个点
4.确定前k个点所在类别的出现频率
5.返回前k个点出现频率最高的类别作为当前点的预测分类
"""

def classify(inX,dataSet,labels,k):
    """
    计算距离最近的一个点,并返回分类值
    
    inX:用于分类的输入向量
    dataSet: 训练样本集
    labels:标签向量
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值