PYTHON机器学习——KNN(k近邻算法)

本文介绍了Python中的KNN(k近邻算法),通过代码实现展示了算法原理。KNN利用最近邻的类别来预测新数据点的归属,此处以欧式距离作为距离度量标准。模拟数据集的分类结果显示,新数据点根据其与最近邻居的距离被归类到特定类别。
摘要由CSDN通过智能技术生成

PYTHON机器学习——KNN(k近邻算法)

代码实现

首先,导入需要用到的包

import numpy as np
import matplotlib.pyplot as plt

初始化模拟数据集和对应的分类

data_x=[[1.15,2.34],
        [1.55,2.47],
        [3.78,4.98],
        [3.34,4.56],
        [2.22,2.34]]
data_y=[1,1,0,0,1]
X_train=np.array(data_x)
Y_train=np.array(data_y)

画图看一下两类数据在图上的分布情况

plt.scatter(X_train[Y_train==1,0],X_train[Y_train==1,1],color='r')
plt.scatter(X_train[Y_train==0,0],X_train[Y_train==0,1],color='y')

在这里插入图片描述
KNN的原理就是当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别。现在我们模拟要看一下,如果出现一个新的数据点,根据欧式距离计算。
要度量空间中点距离的话,有好几种度量方式,比如常见的曼哈顿距离计算,欧式距离计算等等。不过通常KNN算法中使用的是欧式距离,这里只是简单说一下,拿二维平面为例,,二维空间两个点的欧式距离计算公式如下:

二维空间欧式距离

其实就是计算(x1,y1)和(x2,y2)的距离:

在这里插入图片描述

# 欧式计算距离
distance=[]
x=np.array([1.2,3.2])
for i in X_train:
    d=np.sqrt(np.sum((x-i)**2))
    distance.append(d)
distance

[0.8614522621712712,
0.8095677859203638,
3.1344537004077764,
2.5355867171130226,
1.3341664064126337]

dd=np.argsort(distance)#找到排序由小到大的索引索引

array([1, 0, 2], dtype=int64)

top_k=[Y_train[i] for i in dd[:2]] #找到排序小的前两个通过索引 找对应的y

[1, 1]

from collections import Counter
votes=Counter(top_k)#统计
votes.most_common(1)#找到票数最多的数据

[(1, 2)]

predict=votes.most_common(1)[0][0]#最终预测结果

1
最终预测的分类结果为1。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值