基于KNN的模型分类

本文介绍了KNN算法的基本概念,包括其数学原理(基于L2范数的近邻判断),超参数k的选择及其对性能的影响。通过Python示例展示了如何使用鸢尾花数据集,并利用学习曲线确定最优k值。最后展示了预测功能的使用方法。
摘要由CSDN通过智能技术生成

        在初次了解学习有关基本机器学习模型过程中,看到自己无处学习无处了解的窘迫,虽然我知道,在没有学校教学支撑的过程中信息闭塞是尤其可怕,很多东西都是需要付费的。我想通过我自己学习过程获得的东西在此做一简单分享。

KNN算法数学原理       

 如果一个样本在特征空间中的K个最相似(即特征空间中最邻近)的样本(下图中的三个区块)中的大多数属于某一个类别,则该样本也属于这个类别。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。详情如下图:

(图片来源于百度百科)

那么在上述算法描述中提出的近邻是如何实现的呢?据此,我们L2范数,即欧氏距离

除此之外,KNN算法中的超参数k代表着在进行分类时所考虑的最近邻样本的数量。在KNN算法中,当需要对一个新的数据点进行分类时,算法会找到最接近该数据点的k个邻居样本,并通过它们的类别来决定新数据点的分类。因此,超参数k的选择会直接影响到算法的性能和分类结果。

一般来说,选择合适的k值对KNN算法的性能至关重要。如果选择一个较小的k值,模型会更加复杂,容易受到噪声的影响,导致过拟合;而选择一个较大的k值则可能忽略了样本局部的特征,导致欠拟合。在实际应用中,通常通过学习曲线等方法来选择最优的k值,以达到最好的分类效果。

KNN算法应用

我们使用python语言进行案例示范:

我们对鸢尾花数据集提取了特征数据以及目标数据,观察数据,没有较大的数据波动,没有字符型数据,据此不考虑特征工程。

很明显K值的取值影响分类效果

那么如何解决这个问题呢?据此,引入学习曲线:

运行结果如下:

在图中可以清晰的找到最优k值,或者,可以通过numpy数组获取score最大时的下标。   

至此,大致的算法模型训练好了。我们可以通过

knn.predict() 

来进行其他数据的预测。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值