python 分类 投票_邻居来投票:机器学习之快速掌握K-近邻算法分类(Python实战)...

本文介绍了K-近邻算法(KNN)的基本原理和应用,通过Python使用scikit-learn库实现鸢尾花数据集的分类。讨论了KNN算法的优缺点,如计算复杂度高,以及如何选择合适的K值。并展示了从零开始构建KNN分类器的过程,以及K值对模型准确率的影响。
摘要由CSDN通过智能技术生成

K-近邻算法又称KNN算法(K-Nearest Neighbors),既可以用来解决分类问题,也可以用来解决回归问题。

如标题所言,KNN算法的核心原理就是让距离最近的“邻居们”来帮忙投票,邻居们决定预测对象的分类或者取值。

假设我们有一个已经标记好的数据集,我们知道这个数据集中每个样本的类别(标记),现在有一个新的样本,我们不知道它的分类(标记)是什么,我们的任务就是预测它所属的分类。按照KNN的方法,我们要计算这个新样本到数据集中每个样本的距离,并按照距离逆序排列,取前K个样本的分类,以多数战胜少数的原则来决定新样本的分类。

当分类只有两个的时候,这个K值一般会选择一个单数,这样就不会出现两个分类投票数量相等的情况。但是当有多个分类时,很可能会出现多个分类等票的情况。

一个很常见的处理是减小K的值,直到最终只有1个分类胜出;使用这种方法时,如果最后有两个或者多个邻居与新样本的距离相等,那我们可以随机选择一个样本,或者通过别的策略从其中抽取一个。

另一个常用的处理方法是根据距离做一个加权,比如A点距离测试样本1厘米,B点距离测试样本2厘米,那么我认为A点的投票更重要,我就可以给他更大的权重;

KNN算法有很多优点,比如可解释性非常强、精度高、对异常值不敏感、没有数据输入假设(有一些模型要求数据符合特定的分布,或者属于特定的数据类型),原理也很简单,但它也存在一些问题。

它最大的问题就是需要大量的计算。对于每个待预测的样本,都要计算它和所有已知样本之间的距离,这会消耗大量的计算资源。因此它适合在探索初期做一个基准模型,或者是在小数据样本量时使用。

一、scikit-learn实战:鸢尾花数据集

我们先使用scikit-learn提供的分类器来看一下如何使用KNN分类模型。

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.colors import ListedColormap

from sklearn import neighbors, datasets

# 设定邻居数量

n_neighbors = 15

# 鸢尾花数据集

iris = datasets.load_iris()

# 使用数据集的前两列

X = iris.data[:, :2]

y = iris.target

# step size

h = 0.02

# color map

cmap_light = ListedColormap(['#FFAAAA', '#AAFFAA', '

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值