机器学习中KNN算法知识体系的总结

该篇文章记录的是我对KNN算法的理解,以及知识点体系的总结。

KNN算法的思维导图

a6b970dcb935428b8fe0e300237c9003.png
版权为@Don Zhuang 原创,引用请载明出处标题

  • KNN解决什么问题

    • 解决有监督学习的分类和回归问题,根据训练集来预测样本结果。

  • KNN算法思想

    • 是什么

    • 一个样本在训练集中找到最相似(近邻)的K个样本数据,用K个样本数据中大多数归属的类别来预测样本类别。

    • 距离度量计算方式

    • 欧式距离:

      对应位置相减、平方、开根号,值越小越接近。

      • f87fe5a3316d9fa738508fefcb8b0313.png

    • K值选择问题

      K 是超参数:指需要人工指定的参数,此处为邻居的个数。

      • 1、K值不要过小

        • 89a6bea0e8df2629b6c3462b481d5fb9.jpeg

        数据中可能存在异常值,学到了嘈杂数据过多的特征,导致模型太复杂。

      • 2、K值不要过大

        79e6a433b68db82f926918237da2c084.jpeg

        样本均衡:指样本中类别个数相同,导致学到的特征较少。

      • 3、K值尽量不要选择偶数和类别个数的倍数

      • 4、K值举例:5、7、9、11

        实际工作中经常使用交叉验证的方式去选取最优的k值,而且一般情况下K值都是比较小的数值。

    • KNN流程

      • KNN分类流程:

      • 1.计算未知样本到每一个训练样本的距离 ​

      • 2.将训练样本根据距离大小升序排列 ​

      • 3.取出距离最近的K个训练样本 ​

      • 4.进行多数表决,统计 K 个样本中哪个类别的样本个数最多 ​

      • 5.将未知的样本归属到出现次数最多的类别

      • KNN回归流程:

      • 1.计算未知样本到每一个训练样本的距离

      • 2.将训练样本根据距离大小升序排列

      • 3.取出距离最近的K个训练样本

      • 4.把这个 K个样本的目标值计算其平均值

      • 5.平均值作为未知样本预测的值

  • KNN的API

    使用sklearn包

    • 分类的API

      from sklearn.neighbors import KNeighborsClassifier

    • 回归的API

      from sklearn.neighbors import KNeighborsRegressor

  • KNN算法代码演示

  • 回归问题

  • #从sklearn中导入KNN算法工具包
    from sklearn.neighbors import KNeighborsClassifier
    #准备特征数据,特征需传入二维数组
    x = [[1],[3],[4],[5],[7]]
    #准备目标值数据
    y = [0,0,0,1,1]
    #实例化模型,创建KNN对象,指定k的值
    knn = KNeighborsClassifier(n_neighbors=3)
    #用fit方法进行模型训练, 传入特征和目标值
    knn.fit(x,y)
    #对一个样本预测, 自动计算
    myret = knn.predict([[6]])
    #输出结果为[1]
    print(myret)
  • 线性问题

#从sklearn中导入KNN算法工具包
from sklearn.neighbors import KNeighborsRegressor
#准备特征数据
x = [[1,2],[4,5],[6,7],[10,12],[14,17]]
#准备目标值数据
y = [0.1,0.2,0.3,0.5,0.7]
#实例化模型,创建KNN对象
knn = KNeighborsRegressor(n_neighbors=3)
#fit方法模型训练, 传入特征和目标值
knn.fit(x,y)
#预测, 自动计算
myret = knn.predict([[8,9]])
#输出结果为:[0.33333333]
print(myret)

以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值