栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

机器学习——KNN算法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

机器学习——KNN算法

机器学习——KNN算法


文章目录
  • 一、KNN是什么?
  • 二、KNN如何判断
  • 三、KNN算法原理
    • 1.自己构造
    • 2.调用sklearn库



一、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)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/869632.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号