K折交叉验证——cross_val_score函数使用说明

在机器学习中,许多算法中多个超参数,超参数的取值不同会导致结果差异很大,如何确定最优的超参数?此时就需要进行交叉验证的方法,sklearn给我们提供了相应的cross_val_score函数,可对数据集进行交叉验证划分。

一、K折交叉验证(Cross-validation)简介

正常情况下,在数据集划分阶段,通常会划分为训练集trainset和测试集testset,在数据集数量足够多的情况下进行划分,效果较好。但是,对于数据集特别少的情况下,直接划分为训练集和测试集进行训练,模型的效果可能不太好,此时便引入了交叉验证。
交叉验证Cross-validation思想很简单,就是对划分好的训练集再进行划分,分为训练集trainset和验证集validset。最终的数据集分为了三类,训练集trainset、验证集validset和测试集testset,通俗的理解为:训练集是学习知识,验证集是月考,测试集是期末考试。
模型在学习了一段知识之后,就定期进行月考试试手,模型训练完成好之后,再通过期末考试检验。就跟上初高中考试的感觉差不多,如果直接上来就是期末考试,谁顶得住啊,所以一般都会进行几次月考,然后查漏补缺,最终迎接期末考试。

举个例子:
原本数据集共1000张,训练集800张,测试集200张
交叉验证就是对那800张训练集再次进行划分,分为600张训练集和200张验证集
在这里插入图片描述

二、官网API

官网API
需要导包:from sklearn.model_selection import cross_val_score

这里的参数还是比较多的,具体的参数使用,可以根据官网给的demo进行学习,多动手尝试;这里就以一些常用的参数进行说明。

Cross-validation: evaluating estimator performance
交叉验证:评估评估器(estimator)性能
通过交叉验证评估分数

参数

①estimator

用于拟合数据的对象
也就是模型对象,例如可以是一个线性模型lasso = linear_model.Lasso()

具体官网详情如下:
在这里插入图片描述

②X

拟合数据X,可以是列表或数组。

具体官网详情如下:
在这里插入图片描述

③y

在监督学习的情况下,要尝试预测的目标变量,也就是自变量Y

具体官网详情如下:
在这里插入图片描述

④cv

确定交叉验证分割策略,也就是K折交叉验证中的K值
None”,默认5倍交叉验证
int,用于指定(分层)KFold 中的折叠数,即K值

具体官网详情如下:
在这里插入图片描述

返回值

scores

交叉验证每次运行时估计器的得分数组,cv=k,就会得到k个估计器的得分数组

具体官网详情如下:
在这里插入图片描述

三、代码实现

①导包

若导入过程报错,pip安装即可

import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.svm import SVC

②加载数据集

数据集可以自己简单整个,csv格式即可,我这里使用的是6个自变量X和1个因变量Y
在这里插入图片描述

fiber = pd.read_csv("./fiber.csv")
fiber.head(5) #展示下头5条数据信息

在这里插入图片描述

③创建模型

很多模型都可以的,这里以SVM为例,可参考博文:三、支持向量机算法(SVC,Support Vector Classification)(有监督学习)

svc = SVC(C=3.0,kernel='sigmoid',gamma='auto',random_state=42)

④K折交叉验证

k-fold cross validation,K折交叉验证,将数据集分为k(这里k=3)个大小相似的子集,并将k-1(3-1=2)个子集的并集作为训练集,余下的1个子集作为评估集,由此可得到k(3)个不同的训练/评估集;

k_corss = cross_val_score(svc, X, Y, cv=3)
print(k_corss)

⑤完整代码

import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.svm import SVCfiber = pd.read_csv("./fiber.csv")
fiber.head(5) #展示下头5条数据信息X = fiber.drop(['Grade'], axis=1)
Y = fiber['Grade']X_train, X_test, y_train, y_test = train_test_split(X,Y,train_size=0.75,test_size=0.25,random_state=42,shuffle=True)print(X_train.shape) #(36,6) 
print(y_train.shape) #(36,)
print(X_test.shape) #(12,6)
print(y_test.shape) #(12,)svc = SVC(C=3.0,kernel='sigmoid',gamma='auto',random_state=42)k_corss = cross_val_score(svc, X, Y, cv=3)
print(k_corss)

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【深度学习实验】卷积神经网络(六):自定义卷积神经网络模型(VGG)实现图片多分类任务

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 构建数据集(CIFAR10Dataset) a. read_csv_labels() b. CIFAR10Dataset 2. 构建模型(FeedForward&…

Unity:2D游戏设置相机orthographicSize

目录 根据设备分辨率动态设置相机 orthographicSize 根据设备分辨率动态设置相机 orthographicSize 2d游戏里面相机的Orthan.size确定的是高度,宽度是按照屏幕的宽高比计算出来的cameraWidthSize camera.Orthographic.size*(Screen.Width/Screen.height)我在游戏…

嵌入式Linux应用开发-基础知识-第十八章系统对中断的处理③

嵌入式Linux应用开发-基础知识-第十八章系统对中断的处理③ 第十八章 Linux系统对中断的处理 ③18.5 编写使用中断的按键驱动程序 ③18.5.1 编程思路18.5.1.1 设备树相关18.5.1.2 驱动代码相关 18.5.2 先编写驱动程序18.5.2.1 从设备树获得 GPIO18.5.2.2 从 GPIO获得中断号18.5…

【JVM】第三篇 JVM对象创建与内存分配机制深度剖析

目录 一. JVM对象创建过程详解1. 类加载检查2. 分配内存2.1 如何划分内存?2.2 并发问题3. 初始化4. 设置对象头5. 执行<init>方法二. 对象头和指针压缩详解三. JVM对象内存分配详解四.逃逸分析 & 栈上分配 & 标量替换详解1. 逃逸分析 & 栈上分配2. 标量替换…

查看react内置webpack版本的方法

yarn list --pattern webpack npm ls --pattern webpack

十七,IBL-打印各个Mipmap级别的hdr环境贴图

预滤波环境贴图类似于辐照度图&#xff0c;是预先计算的环境卷积贴图&#xff0c;但这次考虑了粗糙度。因为随着粗糙度的增加&#xff0c;参与环境贴图卷积的采样向量会更分散&#xff0c;导致反射更模糊&#xff0c;所以对于卷积的每个粗糙度级别&#xff0c;我们将按顺序把模…

新型信息基础设施IP追溯:保护隐私与网络安全的平衡

随着信息技术的飞速发展&#xff0c;新型信息基础设施在全球范围内日益普及&#xff0c;互联网已经成为我们社会和经济生活中不可或缺的一部分。然而&#xff0c;随着网络使用的增加&#xff0c;隐私和网络安全问题也引发了广泛关注。在这个背景下&#xff0c;IP&#xff08;In…

【C++】单例模式

文章目录 一. 介绍二. 饿汉模式三. 懒汉模式四. 饿汉模式和懒汉模式对比 一. 介绍 单例模式是属于设计模式的一种&#xff0c;那什么是设计模式呢&#xff1f; 设计模式&#xff08;Design Pattern&#xff09;是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总…

从MVC到DDD,该如何下手重构?

作者&#xff1a;付政委 博客&#xff1a;bugstack.cn 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; 大家好&#xff0c;我是技术UP主小傅哥。多年的 DDD 应用&#xff0c;使我开了技术的眼界&#xff01; MVC 旧工程腐化严重&#xff0c;…

【嵌入式】使用MultiButton开源库驱动按键并控制多级界面切换

目录 一 背景说明 二 参考资料 三 MultiButton开源库移植 四 设计实现--驱动按键 五 设计实现--界面处理 一 背景说明 需要做一个通过不同按键控制多级界面切换以及界面动作的程序。 查阅相关资料&#xff0c;发现网上大多数的应用都比较繁琐&#xff0c;且对于多级界面的…

ahk系列——ahk_v2实现win10任意界面ocr

前言&#xff1a; 不依赖外部api接口&#xff0c;界面简洁&#xff0c;翻译快速&#xff0c;操作简单&#xff0c; 有网络就能用 、还可以把ocr结果非中文翻译成中文、同样可以识别中英日韩等60多个国家语言并翻译成中文&#xff0c;十分的nice 1、所需环境 windows10及其以上…

软件设计师_数据库系统_学习笔记

文章目录 3.1 数据库模式3.1.1 三级模式 两级映射3.1.2 数据库设计过程 3.2 ER模型3.3 关系代数与元组演算3.4 规范化理论3.5 并发控制3.6 数据库完整性约束3.7 分布式数据库3.8 数据仓库与数据挖掘 3.1 数据库模式 3.1.1 三级模式 两级映射 内模式直接与物理数据库相关联的 定…

如何初始化一个vue项目

如何初始化一个vue项目 安装 vue-cli 后 ,终端执行 vue ui npm install vue-cli --save-devCLI 服务 | Vue CLI (vuejs.org) 等一段时间后 。。。 进入项目仪表盘 设置其他模块 项目构建后目录 vue.config.js 文件相关配置 官方vue.config.js 参考文档 https://cli.vuejs.o…

嵌入式Linux应用开发-基础知识-第十八章系统对中断的处理②

嵌入式Linux应用开发-基础知识-第十八章系统对中断的处理② 第十八章 Linux系统对中断的处理 ②18.3 Linux中断系统中的重要数据结构18.3.1 irq_desc数组18.3.2 irqaction结构体18.3.3 irq_data结构体18.3.4 irq_domain结构体18.3.5 irq_chip结构体 18.4 在设备树中指定中断_在…

区块链(8):p2p去中心化之websoket服务端实现业务逻辑

1 业务逻辑 例如 peer1和peer2之间相互通信 peer1通过onopen{ write(Mesage(QUERY_LATEST))} 向peer2发送消息“我要最新的区块”。 peer2通过onMessage收到消息,通过handleMessage方法对消息进行处理。 handleMessage根据消息类型进行处理 RESPONSE_BLOCKCHAIN:返回区块链…

基于Java的游戏检索系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言用户功能已注册用户的功能后台功能管理员功能具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博…

BI神器Power Query(25)-- 使用PQ实现表格多列转换(1/3)

实例需求&#xff1a;原始表格包含多列属性数据,现在需要将不同属性分列展示在不同的行中&#xff0c;att1、att3、att5为一组&#xff0c;att2、att3、att6为另一组&#xff0c;数据如下所示。 更新表格数据 原始数据表&#xff1a; Col1Col2Att1Att2Att3Att4Att5Att6AAADD…

嵌入式Linux应用开发-基础知识-第十八章系统对中断的处理①

嵌入式Linux应用开发-基础知识-第十八章系统对中断的处理 第十八章 Linux 系统对中断的处理①18.1 进程、线程、中断的核心&#xff1a;栈18.1.1 ARM 处理器程序运行的过程18.1.2 程序被中断时&#xff0c;怎么保存现场18.1.3 进程、线程的概念 18.2 Linux系统对中断处理的演进…

【教学类-36-10】20230908方脸爷爷和圆脸奶奶(midjounery-niji)(中班:《我爱我家》数:连线、涂色)

背景需求&#xff1a; 领导们鼓动我去参加上海市高级职称评审&#xff08;科研成果比较多&#xff09;&#xff0c;为下一轮保教主任评高级“探探路”。虽然自我感觉道行浅薄&#xff0c;无缘高级&#xff0c;但领导给机会&#xff0c;自然要参与一下&#xff0c;努力了解整个…

【Python】返回指定时间对应的时间戳

使用模块datetime&#xff0c;附赠一个没啥用的“时间推算”功能(获取n天后对应的时间 代码&#xff1a; import datetimedef GetTimestamp(year,month,day,hour,minute,second,*,relativeNone,timezoneNone):#返回指定时间戳。指定relative时进行时间推算"""根…