机器学习——KNN算法

机器学习——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、付费专栏及课程。

余额充值