Python分类算法汇总-K最近邻分类算法(鸢尾花分类与预测)

K最近邻(KNN)算法是一种简单的机器学习算法,属于lazy-learning类型,分类时间复杂度为O(n)。算法基于特征空间中样本间的距离计算,通过选择合适的K值、距离度量方法和多数表决规则进行分类。本文详细介绍了KNN的原理、基本要素和距离计算方法,并通过鸢尾花数据集展示了KNN的实现过程,实验得出的正确率为97.37%。
摘要由CSDN通过智能技术生成

K最近邻分类

K最近邻(k-Nearest Neighbor,KNN)分类算法,是最简单的机器学习算法之一。算法本身简单有效,它是一种 lazy-learning 算法,分类器不需要使用训练集进行训练,训练时间复杂度为0。 分类的计算复杂度和训练集中的文档数目成正比,也就是说,如果训练集中文档总数为 n,那么算法 的分类时间复杂度为O(n)。

原理

K 近邻算法使用的模型实际上对应于对特征空间的划分。

思路

如果一个样本在特征空间中的k个最“相似”(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。这里的“相似”如果度量?我们使用特征空间中两个点之间“距离”来作为他们的相似度,即两个点“距离”越近则认为他们越相似。

三个基本要素

K 值的选择,距离度量和分类决策规则是该算法的三个基本要素。
K 值的选择会对算法的结果产生重大影响:

  1. K值较小意味着只有与输入实例较近的训练实例才会对预测结果起作用,但容易发生过拟合;
  2. 如果 K 值较大,优点是可以减少学习的估计误差,但缺点是学习的近似误差增大,这时与输入实例较远的训练实例也会对预测起作用,使预测发生错误。
  3. 在实际应用中,K 值一般选择一个较小的数值,通常采用交叉验证的方法来选择最优的 K 值。
  4. 随着训练实例数目趋向于无穷和 K=1 时,误差率不会超过贝叶斯误差率的2倍,如果K也趋向于无穷,则误差率趋向于贝叶斯误差率。
  5. 该算法中的分类决策规则往往是多数表决,即由输入实例的 K 个最临近的训练实例中的多数类决定输入实例的类别距离度量一般采用 Lp 距离,当p=2时,即为欧氏距离,在度量之前,应该将每个属性的值规范化,这样有助于防止具有较大初始值域的属性比具有较小初始值域的属性的权重过大。

距离计算方法

最常见以欧氏距离作为衡量标准。

  1. 欧氏距离 D ( x i , x j ) = ( ∑ k = 1 n ( x i l − x j l ) 2 ) 1 2 D(x_i,x_j)={(\sum_{k=1}^{n}(x_i^l-x_j^l)^2)}^\frac{1}{2} D(xi,xj)=(k=1n(xilxjl)

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值