用最简单的数据分类例子实现KNN算法

本文通过一个简单的数据分类例子,介绍K-邻近算法(KNN)的工作原理。利用欧几里得距离计算新数据与已分类数据集中的点的距离,选取最近的k个点,根据多数原则确定新数据的分类。文章还提供了实现KNN算法的步骤,包括创建数据集、计算距离、排序及选择分类,并指出在实现过程中可能出现的错误及其原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

K-邻近算法(KNN)的工作原理是:已知一个带标签的已分类数据集合,输入未分类的新数据之后,计算新数据到数据集中的每个数据的欧几里得距离,筛选出前k个最近的点,选择这k个点中出现次数最多的分类,即作为新数据的分类标签

问题描述:已知4个带标签的坐标点A1(1.0,1.1),A2(1.0,1.0),B1(0.0,0.0),B2(0.0,0.1),输入一个新数据后,输出它是属于A类还是B类

实现流程:

1、导入数值计算库numpy和备胎模块opetator

#KNN.py
from numpy import *
import operator

2、创建带标签的数据,之后直接调用这个方法就能返回我们的数据集

#用于创建数据
def create_data_set():
    group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
    labels = ['A','A','B','B']
    return group, labels

3、KNN算法的核心实现

def classify0(in_x, data_set, labels, k):
    data_set_size = data_set.shape[0]#获取数组的第一维度的维数,即获取数据量
    diff_mat = tile(in_x, (data_set_size,1)) - data_set#计算距离,首先获取坐标差
    sq_diff_mat = diff_mat**2#对坐标差进行分别平方
    sq_distances = sq_diff_mat.sum(axis=1)
    distances = sq_distances**0.5
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值