K-近邻算法(K Nearest Neighbor,简称KNN)基础

目录

KNN算法简介

        KNN算法思想

            电影类型预测例子

K值的选择

KNN解决的问题

        分类流程

        回归流程

KNN分类算法API

KNN回归算法API

总结


KNN算法简介

        KNN算法思想

            如果一个样本在特征空间中的 k 个最相似的样本中的大多数属于某一个类别,则该样本也属于这个类别,比如:根据你的“邻居”来推断出你的类别

            那么,如何确定样本的相似性?

            样本相似性:样本都是属于一个任务数据集的。样本距离越近则越相似

            电影类型预测例子

        分别计算10号电影(唐人街探案)与前九个电影的距离

          

                                

        令k=5(超参数,人为指定)找出最相似(距离最近)的5个电影的类别,查看哪个类别最多,来决定10号电影的类别

K值的选择

        K值过小:用较小邻域中的训练实例进行预测

                容易受到异常点的影响

                k值的减少就意味着整体模型变得复杂,容易发生过拟合

        K值过大:较大邻域中的训练实例进行预测

                受到样本均衡的问题

                且K值的增大就意味着整体的模型变得简单,欠拟合

         举个栗子:当K=N(N为训练样本个数)

                无论输入实例是什么,只会按照训练集中最多的类别进行预测,受到样本均衡的影响

        如何对K超参数进行调优?

                需要一些方法寻找这个最合适的K值

                交叉验证、网格搜索

KNN解决的问题

        解决问题:分类问题、回归问题

        算法思想:若一个样本在特征空间中的 K 个最相似的样本大多数属于某一个类别,则该样本也属于这个类别

        相似性:欧氏距离

        分类流程
  1. 计算未知样本到每一个训练样本的距离
  2. 将训练样本根据距离大小升序排列
  3. 取出距离最近的 K 个训练样本
  4. 进行多数表决,统计 K 个样本中哪个类别的样本个数最多
  5. 将未知的样本归属到出现次数最多的类别
        回归流程

  1. 计算未知样本到每一个训练样本的距离
  2. 将训练样本根据距离大小升序排列
  3. 取出距离最近的 K 个训练样本
  4. 把这个 K 个样本的目标值计算其平均值
  5. 将未知的样本预测的值了

KNN分类算法API

# 导入工具 包
# 分类
from sklearn.neighbors import KNeighborsClassifier # KNN   Classifier  分类

# 创建数据
X = [[1], [2], [3], [4], [5], [6]]
y = [1, 2, 3, 2, 2, 1]
# 类实例化/实例化模型
estimator = KNeighborsClassifier(n_neighbors=3)  # n_neighbors=3  K=3 int,可选(默认= 5),                
                                                 # k_neighbors查询默认使用的邻居数
# fit模型训练函数
estimator.fit(X, y)
# 数据预测
myret = estimator.predict([[4]])
print(myret)  #结果   [2]

KNN回归算法API

# 回归
from sklearn.neighbors import KNeighborsRegressor

X = [[0, 0, 1],
     [1, 0, 0],
     [3, 10, 10],
     [4, 11, 12]
     ]
y = [0.1, 0.2, 0.3, 0.4]
estimator = KNeighborsRegressor(n_neighbors=2)  # Regressor   回归
estimator.fit(X, y)
myret = estimator.predict([[1, 0, 0]])
print(myret)   #结果   [0.15]

总结

  • KNN概念 K Nearest Neighbor
        一个样本最相似的 k 个样本中的大多数属于某一个类别,则该样本也属于这个类别
  • KNN分类流程
        1.计算未知样本到每一个训练样本的距离
        2.将训练样本根据距离大小升序排列
        3.取出距离最近的 K 个训练样本
        4.进行多数表决, 统计 K 个样本中哪个类别的样本个数最多
        5.将未知的样本归属到出现次数最多的类别
  • KNN回归流程
        1.计算未知样本到每一个训练样本的距离
        2.将训练样本根据距离大小升序排列
        3.取出距离最近的 K 个训练样本
        4.把这个 K 个样本的目标值计算其平均值
        5.将未知的样本预测的值了
  • K值的选择

        K值过小:过拟合

        K值过大:欠拟合

   

  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值