机器学习——KNN算法

本文介绍了KNN(K最近邻)算法的基本概念和工作原理,通过实例展示了如何手动计算距离并判断未知样本的类别,同时讲解了如何利用Python的sklearn库快速实现KNN分类。内容涵盖了距离计算、K值选择及其对分类结果的影响,以及KNN算法的实际操作步骤。
摘要由CSDN通过智能技术生成

机器学习——KNN算法




一、KNN是什么?

knn是一种监督学习算法。
通过举例来通俗理解:
假如有一红一绿两个阵营,若在其中红方阵营中有一未知阵营,通过它的相邻数据点的阵营判断该阵营属于哪个阵营。
K最近邻,就是k个最近邻居的意思,假设k=3,代表取该阵营3个邻居来做判断
k的取值:K值应大于分类的种数,以阵营分类为例,当k=1时容易受噪点影响,而无法准确判断;k=2时,倘若邻居为一红一绿则结果无法判断。

二、KNN如何判断

knn算法通过计算测试点与其他所有数据点的距离,取出k个最近的数据点进行判断比较
计算距离一般使用欧氏距离。

三、KNN算法原理

1.自己构造

代码如下(示例):还是以红绿阵营为例,判断一未知阵营属于哪一方
首先准备10个数据点user_data和对应的标签集user_label

import matplotlib.pyplot as plt
import numpy as np
user_data = np.array([
    [0.3,0.6],
    [2.3,1.5],
    [4.8,5.5],
    [1.3,5.2],
    [6.3,8.9],
    [7.4,3.2],
    [3.7,0.3],
    [5.4,4.3],
    [8.1,6.2],
    [9.4,7.8]

])#数据点
user_label = np.array([0,0,0,0,0,1,1,1,1,1])#打标签,分类阵营
test_data = np.array([2.9,5.6])#测试点
d = []
#求所有点到测试点的距离
for i in user_data:
    len = np.sqrt(np.sum(np.square(test_data - i)))#np.square矩阵平方公式
    d.append(len)
#把列表里面数据按照从小到大排列,输出下标索引
d_index = np.argsort(d)
print(d)
print(d_index)
c = []
for i in d_index[:3]:
    c.append(user_label[i])#将最近的3个邻居放在c中
print(c)
numb0 = 0
numb1 = 0
for i in c:
    if i == 0:
        numb0 += 1
    else:
        numb1 += 1
if (numb0>numb1):
    print("是0类")
else:
    print("是1类")

2.调用sklearn库

python中强大的库,已经封装好了线性回归和逻辑回归函数,我们可直接调用

from sklearn.neighbors import KNeighborsClassifier #导入库
#分类器参数n_neighbors默认为5,
Knn = KNeighborsClassifier(n_neighbors = 3)#设置邻居数为3
Knn.fit(user_data,user_label)#传入数据x和y,两个参数分别为数据和标签
c = knn.predict(test)#test为测试点,直接计算距离
print(c)


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值