美文网首页
KNN是什么东东?

KNN是什么东东?

作者: 一只怂货小脑斧 | 来源:发表于2020-08-27 14:25 被阅读0次

小白自学路上的备忘记录。。。


一、KNN

KNN(K-Nearest Neighbor)K-近邻算法,是一种最简单常用的监督学习算法,属于“懒惰学习”,即在训练阶段仅仅是把样本保存起来,训练时间开销为0,待收到测试样本后再进行处理。而那些在训练阶段就对样本进行学习处理的方法,称为“急切学习”。

懒惰学习是一种训练集处理方法,其会在收到测试样本的同时进行训练,与之相对的是急切学习,其会在训练阶段开始对样本进行学习处理。

若任务数据更替频繁,则可采用懒惰学习方式,先不进行任何训练,收到预测请求后再根据当前数据进行概率估值;若数据不断增加,则可在现有估值基础上,仅对新增样本的属性值进行 增量学习 ,其只需对相关概率估值进行技术修正即可

https://hyper.ai/wiki/4266

二、模型原理

为了判断未知样本的类别,以所有已知类别的样本作为参照,计算未知样本与所有已知样本的距离,从中选取与未知样本距离最近的K个已知样本,根据少数服从多数的投票法则(majority-voting),将未知样本与K个最邻近样本中所属类别占比较多的归为一类。

KNN 既然是K个近邻投票选择类别,那么就有两个问题:

  • 1.如何选出K个近邻

在KNN中,具体执行步骤为:

(1) 计算待测样本和训练集中每个样本点的距离

ps.通常使用的距离函数有:欧氏距离、余弦距离、汉明距离、曼哈顿距离等,一般选欧氏距离作为距离度量,但是这是只适用于连续变量。在文本分类这种非连续变量情况下,汉明距离可以用来作为度量。通常情况下,如果运用一些特殊的算法来计算度量的话,K近邻分类精度可显著提高,如运用大边缘最近邻法或者近邻成分分析法。

(2) 对上面的所有距离排序

(3) 选前K 个最小距离的样本作为“选民”

在 scikit-learn 中 KNN算法的 K 值是通过 n_neighbors 参数来调节的,默认值是 5

K 值较大:距离较远的训练样本也可以对结果产生影响,模型鲁棒,误差大,欠拟合

K值较小:在较小的近邻区域内训练,结果对近邻点十分敏感

可通过交叉验证确定K值。

  • 2.如何“投票”,或者说,选票的权重是否相等

在 KNN 算法中,所选择的邻居都是已经正确分类的对象,基本上邻居们是均匀权重投票,即一人一票,计数比较结果。 在 scikit-learn 中通过设置 weights 参数选择对应的权重算法。

三、KNN的特点

  • 原理简单

  • 保存模型需要保存全部样本集

  • 训练过程很快,预测过程很慢

四、KNN 的应用

1.处理二分类问题

2.处理多分类问题

3.回归分析

五、鸢尾花分类代码样例

实现鸢尾花属性类别的分类器

代码

import numpy as np # 快速操作结构数组的工具
import pandas as pd # 数据分析处理工具
import matplotlib.pyplot as plt # 画图工具
from sklearn import datasets # 机器学习库

#数据集 0-setosa、1-versicolor、2-virginica
scikit_iris = datasets.load_iris()
# 转换成pandas的DataFrame数据格式,方便观察数据
iris = pd.DataFrame(data=np.c_[scikit_iris['data'], scikit_iris['target']],
                     columns=np.append(scikit_iris.feature_names, ['y']))

print(iris.head(2))

# 检查数据是否有缺失
print(iris.isnull().sum())

# 观察样本中按类别数量是否比较均衡
print(iris.groupby('y').count())

# 选择全部特征训练模型
X = iris[scikit_iris.feature_names]
# label
y = iris['y']

# 第一步,选择model
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=1)
# 第二步,fit X、y
knn.fit(X, y)
# 第三步,predict新数据
print(knn.predict([[3, 2, 2, 5]]))

参考资料:

https://blog.csdn.net/pengjunlee/article/details/82713047

《机器学习之路》

相关文章

  • KNN是什么东东?

    小白自学路上的备忘记录。。。 一、KNN KNN(K-Nearest Neighbor)K-近邻算法,是一种最简单...

  • Python机器学习之K最近邻算法

    一、K最近邻算法的原理 原理部分直接看我另一篇《KNN是什么东东?》,本文主要针对如何应用。 K这个字母的含义就是...

  • KNN算法以及欧式距离

    1.KNN算法介绍 KNN 是什么? KNN(K-Nearest Neighbor)是最简单的机器学习算法之一,可...

  • 100天机器学习实践之第7天

    K—近邻分类算法(KNN) KNN是什么? K—近邻算法(简称KNN)是一种虽然简单但很常用的分类算法,也可用于回...

  • 无标题文章

    这是什么东东 大热天的

  • Spark --基于DataFrame API实现KNN算法

    Spark -- 基于DataFrame API实现KNN算法 KNN简介 KNN(k-Nearest Neigh...

  • 气血是什么东东?

    学习中医后,每天都在说气血。气血是人体生命必须的两种重要物质,少了任何一种,人体生命活动就不能有序进行,就会停止。...

  • 中焦是什么东东?

    记得几年前和朋友S唠嗑,说到她的工作,她说每天11点前睡觉都觉得很奢侈。她说:“我是一个死处女座。” 她在单位总是...

  • 舌苔是什么东东?

    一个孩子积食发烧了,妈妈做了相应的处理后,记录下来发烧到痊愈的舌苔变化。 说舌苔之前再复习一下积食是怎么回事。积食...

  • 紫苏是什么东东

    紫苏是什么?紫苏是一种可药用的植物的名称。紫苏有紫色和绿色两种。下面我们介绍一下紫苏是什么? 紫苏(学名:Peri...

网友评论

      本文标题:KNN是什么东东?

      本文链接:https://www.haomeiwen.com/subject/hvgbjktx.html