超详细Python教程——k最近邻分类

k最近邻分类

k k k最近邻(简称kNN,k-Nearest Neighbor)是Cover和Hart在1968年提出的一种简单的监督学习算法,可用于字符识别、文本分类、图像识别等领域。kNN的工作机制非常简单:给定测试样本,基于某种距离度量(如:欧式距离、曼哈顿距离等)找出训练集中与其最接近的 k k k个训练样本,然后基于这 k k k个“最近邻居”的信息来进行预测。对于分类任务,可以在 k k k个最近邻居中选择出现次数最多的类别标签作为预测的结果;对于回归任务,可以使用 k k k个最近邻居实际输出(目标值)的平均值作为预测的结果,当然也可以根据距离的远近进行加权平均,距离越近的样本权重值就越大。

案例:电影分类预测

k值的选择和交叉检验

k值的选择对于kNN算法的结果有非常显著的影响。下面用李航博士的《统计学习方法》一书中的叙述,来对k值的选择加以说明。

如果选择较小的 k k k值,就相当于用较小的邻域中的训练实例进行预测,“学习”的近似误差会减小,只有与输入实例较近(相似的)训练实例才会对预测结果起作用;但缺点是“学习”的估计误差会增大,预测结果会对近邻的实例点非常敏感,如果近邻的实例点刚好是噪声,预测就会出错。换句话说, k k k值的减小就意味着整体模型变得复杂,容易发生过拟合

如果选择较大的 k k k值,就相当于用较大的邻域中的训练实例进行预测,其优点是可以减少学习的估计误差,但缺点是学习的近似误差会增大。这时候,与输入实例较远(不相似的)训练实例也会对预测起作用,使预测发生错误。对于 k = N k=N k=N的极端情况(其中 N N N代表所有的训练实例的数量),那么无论输入实例是什么,都会预测它属于训练实例中最多的类,很显然,这样的模型完全忽略了训练实例中大量的有用信息,是不可取的。

实际应用中, k k k的取值通常都比较小,可以通过交叉检验的方式来选择较好的 k k k值。

算法优缺点

优点:

  1. 简单有效
  2. 重新训练代价低
  3. 适合类域交叉样本
  4. 适合大样本分类

缺点:

  1. 惰性学习
  2. 输出的可解释性不强
  3. 不擅长处理不均衡样本
  4. 计算量比较大
  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用Python中的Pandas库来读取CSV文件。具体步骤如下: 1. 安装Pandas库:在命令行中输入`pip install pandas`。 2. 导入Pandas库:在Python文件中写入以下代码: ```python import pandas as pd ``` 3. 读取CSV文件:使用Pandas库中的read_csv()函数来读取CSV文件,例如: ```python data = pd.read_csv('filename.csv') ``` 其中,'filename.csv'是你要读取的CSV文件名。 4. K-最近邻分类算法:K-最近邻分类算法是一种基于实例的学习方法,它通过比较新样本与训练集中的所有样本的距离来确定最近邻居。具体步骤如下: - 计算新样本与训练集中所有样本的距离; - 找到距离新样本最近的K个样本; - 根据这K个样本的类别标签来预测新样本的类别。 可以使用Python中的scikit-learn库来实现K-最近邻分类算法。具体步骤如下: 1. 安装scikit-learn库:在命令行中输入`pip install scikit-learn`。 2. 导入scikit-learn库:在Python文件中写入以下代码: ```python from sklearn.neighbors import KNeighborsClassifier ``` 3. 创建K-最近邻分类器:使用KNeighborsClassifier类来创建K-最近邻分类器,例如: ```python knn = KNeighborsClassifier(n_neighbors=3) ``` 其中,n_neighbors是你要选择的K值。 4. 训练分类器:使用fit()方法来训练分类器,例如: ```python knn.fit(X_train, y_train) ``` 其中,X_train是训练集中的特征数据,y_train是训练集中的类别标签。 5. 预测新样本的类别:使用predict()方法来预测新样本的类别,例如: ```python y_pred = knn.predict(X_test) ``` 其中,X_test是新样本的特征数据,y_pred是预测出的类别标签。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月流霜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值