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

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.dtcms.com/a/354728.html

相关文章:

  • IDA Pro 逆向分析快捷键大全及核心用法详解
  • 【Day 35】Linux-Mysql错误总结
  • 微信小程序对接EdgeX Foundry详细指南
  • 导入文件允许合并表格
  • 上海控安:汽车API安全-风险与防护策略解析
  • Elasticsearch数据迁移方案深度对比:三种方法的优劣分析
  • 领悟8种常见的设计模式
  • 74HC595芯片简析
  • OpenCV 基础操作实战指南:从图像处理到交互控制
  • Ubuntu有限网口无法使用解决方法
  • 企业级AI应用场景的核心特征
  • Fluent Bit针对kafka心跳重连机制详解(上)
  • DA14531(Cortex-M0+)之Wake-up Interrupt Controller (WIC)
  • JumpServer开源堡垒机:统一访问入口 + 安全管控 + 操作审计
  • 从0开始搭建一个前端项目(vue + vite + typescript)
  • 第6篇:链路追踪系统 - 分布式环境下的请求跟踪
  • 【STM32】G030单片机的窗口看门狗
  • 从协作机器人到智能协作机器人:工业革命的下一跳
  • Fluent Bit针对kafka心跳重连机制详解(下)
  • KubeBlocks For MySQL 云原生设计分享
  • Logstash数据迁移之mysql-to-kafka.conf详细配置
  • 卷积神经网络(CNN)搭建详解
  • 区块链+隐私计算护航“东数西算”数据安全报告
  • AppScan扫描电脑上的客户端,C/S架构客户端等
  • 深度学习----卷积神经网络实现数字识别
  • RAW API 的 TCP 总结2
  • 数据结构8---排序
  • 鸿蒙OS与Rust整合开发流程
  • 【边缘计算】RK3576算力评估
  • 排序(Sort)方法详解(冒泡、插入、希尔、选择、堆、快速、归并)