当前位置: 首页 > news >正文

yjs机器学习常见算法01——KNN(K—近邻算法)

1.K—近邻算法 的含义:

简单来说就是通过你的邻居的“类别”,来推测你的“类别”

定义:如果一个样本在特征空间中的k个最相似(即特征空间中最临近)的样本中大多数属于某一类别,则该样本也属于这个类别。

2.距离公式(欧式公式):

3.KNN算法的流程:

1>.计算已知类别数据集中的 当前点 之间的距离

2>.按照距离递增的次序进行排序

3>.选取与当前最近k个点

4>.统计k个点所在的类别 ,以及类别出现的频率

5>.返回4中频率出现最高的类别 作为当前点的预测分类

4.KNN算法API及简单代码

用到的库:scikit-learn

实例化分类器:

K=sklearn.neighbors.KNeighborsClassifier(n_neighbors=xx)

已知点:

X=[1],[2],[3]...        //注意这里是“二维”数组形式

对应的分类:

Y=0,1,1...        //对应的分类是“一维数组”形式

如何将X与Y对应起来:

K.fit(X,Y)

如何预测未知点

z=【[5],[6]...】:

K.predict(z)

5.代码:

import sklearn
from sklearn.neighbors import KNeighborsClassifier#实例化“分类器”
K_NN=KNeighborsClassifier(n_neighbors=3)#已知类别的点
x=[[1],[2],[3],[10],[20],[100]]
#对应的类别
y=[0,0,0,1,1,1]#将点和类别一一对应
K_NN.fit(x,y)#将要预测的点
z=[[1],[40]]#预测
pre=K_NN.predict(z)
print(pre)

结果:

6.K值大小说明:

        k值过小,那么预测的点就会非常依赖相近的点,一旦相近的点出现错误或者选择的数据集不合适,那么就会产生错误预测,k值过小时往往近似误差比较小,因此他就可能会出现过拟合的现象。

        k值过大,举一个夸张地例子来说,如果已知数据集的样本有n个,k=n,那么输出的结果很大程度上取决于已知数据集的类别,比如说一个班一共30个人,有2个女生,28个男生,新来一名同学(实际是女),k=30,那么预测值就会是男。所以,k值过大,容易发生欠拟合现象。

        一般我们会取较小的数作为k值,使用交叉验证法找到最合适的k,具体步骤见后篇。

新名词:

近似误差:

主要注重的是训练集的误差,近似误差越小,不能说明模型越好,只能说是在训练集上表现良好,所以近似误差特别小时,很可能出现过拟合现象,并且此时的模型也不是最佳的。

估计误差:

主要关注的是训练集的误差估计误差越小,说明预测能力越好,模型也接近最佳

因此我们一般看的是估计误差。


http://www.mrgr.cn/news/50340.html

相关文章:

  • SQL进阶技巧:如何删除第N次连续出现NULL值所存在的行?
  • 深刻,深克
  • 唐寅,风流倜傥的艺术天才
  • 【力扣刷题实战】环形链表
  • 安全光幕的Mutting功能
  • fastify 中的 payload 作用
  • Java8开始ConcurrentHashMap,为什么舍弃分段锁?
  • 在vue项目中如何合理高效的使用生命周期钩子函数
  • 智能之眼:如何用监督学习教机器看懂世界
  • 基于springboot的网页时装购物系统(含源码)
  • BASE 原则
  • Redis如何实现高性能和高可用
  • C#中JSON字符串与Dictionary字典的相互转换方法
  • 【Oracle数据库进阶】004.SQL基础查询_聚合、分组、过滤、排序
  • C++对C的扩展(一)---作用域运算符和命名空间
  • 大数据开发电脑千元配置清单
  • 亚洲最具影响力人物颜廷利:心理健康对身体健康的重要影响
  • 高级java每日一道面试题-2024年10月15日-JVM篇-说一下JVM的主要组成部分?及其作用?
  • 【JS】数组详解
  • 异地多活(Active-Active Geo-Redundancy)