(分类)KNN算法- 参数调优

在此专栏的上一篇文章的基础上,进行交叉实验获取最佳的K值
上一篇文章:KNN算法案例-鸢尾花分类
数据拆分的过程:
数据拆分的过程

交叉验证(Cross Validation) 是一种在机器学习中广泛使用的模型评估参数调优方法。在训练模型时,我们通常将数据集测试集,其中训练集用于训练模型,测试集用于评估模型的性能,但是这种方法可能会受到数据集划分方式的影响,导致苹果结果的不稳定交叉实验通过对数据集进行多次划分和评估,可以更可靠的评估模型的性能。

交叉验证的常见方法是k折交叉验证(k-Fold Cross Validation)
步骤如下:
1、将数据集随机分成k个互不重叠的自己每个子集称为一个‘折’。
2、对于每个折,执行以下操作:
a.将当前折作为验证集,其余的折作为训练集
b.使用训练集训练模型
c.使用验证集评估模型性能(如计算分类准确率,均方误差等指标)
3.计算K次迭代中模型性能指标的平均值作为模型最终的苹果结果。

交叉验证的优点如下:

1.降低模型评估结果的方差:通过多次评估模型,交叉验证可以提供更稳定、更可靠的性能评估。
2.更充分的利用数据:交叉验证可以确保每个样本都被用于训练和验证,使得模型学习和评估更为全面

在算法调优中,交叉验证可以帮助我们找到最佳的超参数(如KNN中的K值)。我们可以尝试不同的的超参数组合。这种方法可以有效地防止过拟合,提高模型在新数据上的泛化性能。
前期导入包和加载数据以及切分数据

import numpy as np
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import train_test_split
X, y = datasets.load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,random_state=42)

对超参数进行交叉验证筛选

scores = []
params_k = np.arange(1, 31)
for k in params_k:knn = KNeighborsClassifier(n_neighbors=k)score = cross_val_score(knn,  # 选择模型X_train,  # 数据y_train,   # 目标值cv=2,   # 将数据切分为多少份scoring='accuracy' # 验证方式).mean()scores.append(score)
print(scores)

验证方式的具体如下:
验证方式对应表
选择最佳的超参数

# 使用numpy argmax() 找出最佳的超参数 
k_best = np.argmax(scores) + 1
print("得分最高的超参数K值为:", k_best)

使用最佳的超参数进行模型的训练

estimator = KNeighborsClassifier(n_neighbors=k_best)
estimator.fit(X_train, y_train)
y_ = estimator.predict(X_test)
print('真实的',y_test)
print('预测值',y_)

对模型进行评分

estimator.score(X_test,y_test)

坚持学习,整理复盘

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/256209.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux存储软件栈到底有多复杂,存储软件栈全景概览

从今天开始,我们将介绍一下Linux的存储软件栈,也称为IO栈。今天我们先从整体上了解一下Linux的整个IO栈,后续再深入介绍每个组件。我们很难说清楚Linux的存储软件栈到底有多复杂,但thomas-krenn的一张图可能可以给大家一个比较直观…

短视频文案生成器有哪些?【2024新版短视频文案生成器】

在当今数字化社交时代,短视频已经成为人们生活中不可或缺的一部分。然而,想要制作引人注目、独具创意的短视频,光有精彩的画面和音效可能不够,一个吸引眼球的短视频文案也是至关重要的。本文将专心分享短视频文案生成器的种类&…

python pydoc生成API文档

pydoc是python内置的一个文档生成模块。 pydoc 模块会根据 Python 模块来自动生成文档。 生成的文档可在控制台中显示为文本页面,提供给 Web 浏览器访问或者保存为 HTML 文件。 对于模块、类、函数和方法,显示的文档内容取自文档字符串(即 _…

通信原理 计网

串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别使用于计算机与计算机、计算机与外设之间的远距离通信。 同步通信 —— 严格时钟同步 ——— 连续串…

html电子签名

html电子签名 html5实现手写签名板&#xff0c;点击保存即可生成base64格式的图片 使用H5自带的canvas&#xff0c;无需引入js无需引入别的js 效果图 html代码 <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"…

nfs高可用部署(lsyncd两主机双向同步)

nfs高可用部署 1. 工具简介 1.1. rsync ​ rsync&#xff08;remote synchronize&#xff09;是 Liunx/Unix 下的一个远程数据同步工具&#xff0c;它可通过 LAN/WAN 快速同步多台主机间的文件和目录。rsync 通过比较两边文件是否相同&#xff0c;不相同才进行更新。 ​ 但是…

【HarmonyOS开发】DevEco Studio安装及其配置

目录 前言下载工具准备开始安装配置开始新建一个项目 前言 DevEco Studio是一款用于开发HarmonyOS应用的集成开发环境&#xff0c;在安装DevEco Studio的时候&#xff0c;可能会在安装或者配置的时候出现各种各样的小问题&#xff0c;在此做下记录。 下载工具准备 官网下载地…

springboot集成docker

1、快速构建springboot-demo项目 地址&#xff1a;https://start.spring.io/

计算机msvcr71.dll丢失的解决方法,总结3个有效的方法

在计算机使用过程中&#xff0c;我们常常会遇到一些错误提示&#xff0c;其中之一就是“msvcr71.dll丢失”。这个问题通常是由于系统文件损坏或缺失引起的&#xff0c;会导致某些程序无法正常运行。那么&#xff0c;msvcr71.dll到底是什么呢&#xff1f;它又有什么作用&#xf…

Leetcode刷题笔记题解(C++):165. 比较版本号

思路&#xff1a;利用小数点来分开求和&#xff0c;判断和是否相等来推断两个版本号是否一致 class Solution { public:int compareVersion(string version1, string version2) {int i0;//记录version1的字符下标int j0;//记录version2的字符下标int num10;//保存version1的和…

vue3 + mark.js 实现文字标注功能

效果图 安装依赖 npm install mark.js --save-dev npm i nanoid代码块 <template><!-- 文档标注 --><header><el-buttontype"primary":disabled"selectedTextList.length 0 ? true : false"ghostclick"handleAllDelete"…

使用阿里巴巴同步工具DataX实现Mysql与ElasticSearch(ES)数据同步

一、Linux环境要求 二、准备工作 2.1 Linux安装jdk 2.2 linux安装python 2.3 下载DataX&#xff1a; 三、DataX压缩包导入&#xff0c;解压缩 四、编写同步Job 五、执行Job 六、定时更新 6.1 创建定时任务 6.2 提交定时任务 6.3 查看定时任务 七、增量更新思路 一、Linux环境要…