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

Day16_【机器学习—KNN算法】

一、KNN 简介

KNN:K-近邻算法 (K Nearest Neighbor)

算法思想:一个样本最相似的 k 个样本中的大多数属于某一个类别,则该样本也属于这个类别

距离计算:欧氏距离

二、KNN 解决两类问题

分类问题与回归问题

分类流程:

  1. 计算未知样本到每一个训练样本的距离
  2. 将训练样本根据距离大小升序排列
  3. 取出距离最近的 K 个训练样本
  4. 进行多数表决,统计 K 个样本中哪个类别的样本个数最多
  5. 将未知的样本归属到出现次数最多的类别

回归流程:

  1. 计算未知样本到每一个训练样本的距离(欧式距离:对应维度差值的平方和 开平方根
  2. 将训练样本根据距离大小升序排列
  3. 取出距离最近的 K 个训练样本
  4. 把这个 K 个样本的目标值计算其平均值
  5. 作为将未知的样本预测的值

其中K值的选择:需要一些方法来寻找这个最合适的K值 交叉验证、网格搜索

  • K值过小 ,过拟合,容易受到异常点的影响,整体模型变得复杂
  • K值过大 ,欠拟合,整体的模型变得简单

三 、KNN算法API的使用

首先机器学习的开发环境,安装:基于Python的 scikit-learn 库

分类问题与回归问题

分类问题

'''
分类问题
KNN算法 代码实现步骤1:导包2:创建模型对象3:准备训练集4:准备测试集5:模型训练6:模型预测,并打印结果
'''
# 1:导包
from sklearn.neighbors import KNeighborsClassifier
#2:创建模型对象
estimator = KNeighborsClassifier(3)
#3、准备训练集   列表嵌套   二维  [样本数量,特征数量]
#外层列表  样本数  4个
#内层列表  特征数量  1列
x_train = [[0], [1], [2], [3]]
#一维的   [样本数量]  4个
y_train = [0, 0, 0, 1]
#4、准备测试集  易错点2:注意这里x_test是二维的
x_test = [[4]]
#5、模型训练
#参1:训练集特征  参2:训练集标签
estimator.fit(x_train, y_train)
#6、模型预测
y_test = estimator.predict(x_test)
#打印结果
print(y_test)

回归问题

'''回归问题'''
#1、导包
from sklearn.neighbors import KNeighborsRegressor
#2、创建模型(算法)对象 注意!!这里是回归问题
estimator = KNeighborsRegressor(2)
#3、准备训练集
x_train = [[0, 0, 1],[1, 1, 0],[3, 10, 10],[4, 11, 12]]
y_train = [0.1, 0.2, 0.3, 0.4]
#4、测试集(x_test)
x_test = [[3, 11, 10]]
#5、模型训练
estimator.fit(x_train, y_train)
#6、模型预测(y_test)
y_test = estimator.predict(x_test)
#打印结果
print(y_test)

http://www.xdnf.cn/news/18931.html

相关文章:

  • 小白入门:支持深度学习的视觉数据库管理系统
  • 解构与重构:“真人不露相,露相非真人” 的存在论新解 —— 论 “真在” 的行为表达本质
  • c++ 观察者模式 订阅发布架构
  • Visual Scope (Serial_Digital_Scope V2) “串口 + 虚拟示波器” 工具使用记录
  • JavaScript中的BOM,DOM和事件
  • Spring Boot 实战:接入 DeepSeek API 实现问卷文本优化
  • 底层音频编程的基本术语 PCM 和 Mixer
  • 数据分析学习笔记4:加州房价预测
  • 腕上智慧健康管家:华为WATCH 5与小艺的智美生活新范式
  • 音频转PCM
  • curl、python-requests、postman和jmeter的对应关系
  • AR培训系统:油气行业的安全与效率革新
  • frp 一个高性能的反向代理服务
  • PAT 1086 Tree Traversals Again
  • SpringBoot项目使用Liquibase 数据库版本管理
  • C#编译错误:CS1056 意外字符
  • vsgCs显示谷歌全球倾斜模型-节点
  • 第八章:《性能优化技巧》——深入讲解预分配容量、移动语义、避免频繁拼接等优化策略,以及C++17的`string_view`如何减少拷贝开
  • vxetable数据导出
  • UGUI源码剖析(13):交互的基石——Selectable状态机与Button事件
  • Kafka 4.0 五大 API 选型指南、依赖坐标、上手示例与最佳实践
  • 项目实战4:TrinityCore框架学习
  • 科技守护古树魂:古树制茶行业的数字化转型之路
  • 把llamafacoty微调后的模型导出ollama模型文件
  • 【前端教程】JavaScript入门核心:使用方式、执行机制与核心语法全解析
  • Oracle 数据库权限管理的艺术:从入门到精通
  • 目标检测领域基本概念
  • 第6篇:链路追踪系统 - 分布式环境下的请求跟踪
  • JSP程序设计之JSP指令
  • 【Python】QT(PySide2、PyQt5):Qt Designer,VS Code使用designer,可能的报错