机器学习——pca降维/交叉验证/网格交叉验证

1、pca降维:目的是提升模型训练速度

  • 定义:
    在这里插入图片描述
  • 使用方法:给训练数据或者测试数据进行降维处理
    • 给训练数据降维
      在这里插入图片描述
    • 给测试数据降维:这里1就要用transform,而不是fit_transform,因为之前训练数据降维时特征已经确定,测试数据提取的特征要和训练数据保持一致。
      在这里插入图片描述

2、交叉验证:目的是保证模型的测试数据和训练数据划分清楚,从而对比选出得分最高的模型,保证数据划分的稳定性,而不是之前随机划分。

  • 概念:每次进行数据划分都是随机的,所以没法保证稳定的模型精确度
    在这里插入图片描述
  • 方法一:k折交叉验证(将所有数据划分成k份,每次训练用1/k作为测试数据,其余数据作为训练数据),使用方式是先通过sklearn库中的model_selection导入KFold,然后设定好KFold的n_splits参数,之后通过模型的split方法划分训练数据和测试数据,返回的是一个生成器,其中会按照数据的下标划分好数据,使用时可以通过数组索引的方式(数组[数组])。注意:返回给你的数据有k份,每一份数据都是取其中1/k作为测试数据,其余数据作为训练数据,且每份数据都是所有数据的下标。
  • 方法二:StratifiedKFold(分层KFold):相对于方法一,挑着分,分的更细了,使用方法类似K折交叉验证。注意:返回给你的数据有k份,每一份数据都是取其中1/k作为测试数据,其余数据作为训练数据,且每份数据都是所有数据的下标。
  • 应用示例
from sklearn.model_selection import KFold # 这是k折交叉验证的包
from sklearn.model_selection import StratifiedKFold # 这是分层KFold的包
# 调用
kf = KFold(n_splits=5) # n_splits等于k折,设置为几,就会把数据分成几份
st = StratifiedKFold(n_splits=5) # n_splits等于k折,设置为几,就会把数据分成几份
iterable_kf = kf.split(Date,Target) # 生成的是迭代器,最好用for循环调用
iterable_st = st.split(Date,Target) # 生成的是迭代器,最好用for循环调用
for train_index, test_index in st_iterable:x_train = Date[train_index] # 注意这种取数据的方式需要Date是np.array类型的数组才可以取到对应行y_train = Target[train_index]x_test = Date[test_index]y_test = Target[test_index]···

3、网格交叉验证:GridSearchCV存在的意义就是自动调参,只要把参数输进去,就能给出最优化的结果和参数

  • 举例:SVM模型选择最优惩罚因子C和最优高斯核函数对应的参数gamma(gamma参数只有核函数为高斯时才有)
# 导包
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC# 导入数据
data, target = load_iris(return_X_y=True)
'''
网格交叉验证参数说明:
estimator:模型对象,不需要带参数,只需要输入模型对象即可
param_grid:网格参数,通过字典形式(键为模型参数名字符串,值为可能的数值列表)输入,每个参数需要提供多个值,会选择最优组合
n_job:多进程,-1表示适用所有处理器CPU
cv:默认分成5份,分的方法类似k折交叉验证,属于内部操作
'''
svc = SVC()
param_grid = {'C':[0.1, 1,10,15],'gamma':[0.01,0.05,0.1,0.5,1]
}
gv = GridSearchCV(estimator=svc,param_grid=param_grid,n_jobs=-1,cv=5)
gv.fit(data,target)
# 获取网格交叉验证最终获取的一些最优属性
gv.best_score_,gv.best_params_,gv.best_estimator_ 
# (0.9866666666666667, {'C': 10, 'gamma': 0.05}, SVC(C=10, gamma=0.05))

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

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

相关文章

构建基于neo4j知识图谱、elasticsearch全文检索的数字知识库

前言: 在数字化时代,知识库的建设正逐渐成为企业、学术机构和个人的重要资产。本文将介绍如何使用neo4j和elasticsearch这两种强大的数据库技术来构建知识库,并对其进行比较和探讨。 技术栈: springbootvueneo4jelasticsearch…

【每日一题】1993. 树上的操作

文章目录 Tag题目来源题目解读解题思路方法一:深度优先搜索 写在最后 Tag 【深度优先搜索】【树】【设计数据结构】【2023-09-23】 题目来源 1993. 树上的操作 题目解读 本题是一个设计类的题目,对于设计类的题目就一步步的实现题目要求的成员方法即可…

【ACDC数据集】:预处理ACDC心脏3D MRI影像数据集到VOC数据集格式,nii转为jpg,label转为png

【Segment Anything Model】做分割的专栏链接,欢迎来学习。 【博主微信】cvxiaoyixiao 本专栏为公开数据集的预处理,持续更新中。 文章目录 1️⃣ ACDC数据集介绍2️⃣ ACDC数据集样例 3️⃣ 预处理ACDC目标 4️⃣ 处理结果样图 5️⃣ 代码 6️⃣ 划分测…

十五)Stable Diffusion使用教程:另一个线稿出3D例子

案例:黄金首饰出图 1)线稿,可以进行色阶加深,不易丢失细节; 2)文生图,精确材质、光泽、工艺(抛光、拉丝等)、形状(包括深度等,比如镂空)和渲染方式(3D、素描、线稿等)提示词,负面提示词; 3)seed调-1,让ai随机出图; 4)开启controlnet,上传线稿图,选择cann…

leetcode 2560. 打家劫舍 IV

2560. 打家劫舍 IV 沿街有一排连续的房屋。每间房屋内都藏有一定的现金。现在有一位小偷计划从这些房屋中窃取现金。 由于相邻的房屋装有相互连通的防盗系统,所以小偷 不会窃取相邻的房屋 。 小偷的 窃取能力 定义为他在窃取过程中能从单间房屋中窃取的 最大金额 。…

《Java并发编程实战》第4章-对象的组合

0.概念理解 状态空间:对象与变量所有可能的取值,状态空间越小,就越容易判断线程的状态,final域用得越多,就越能简化对象可能状态的分析过程(不可变对象只有唯一的状态)。 实例封闭:…

Maven高级---分模块设计,继承(继承关系/版本锁定/自定义属性)

目录 分模块设计 继承与聚合 继承关系 ​案例​ 版本锁定 自定义属性/引用属性 分模块设计 把一个项目拆分成不同的模块 我们可以把原来一个项目包中的东西单独提出来作为一个模块,也是解耦的思想 然后我们可以通过引入依赖的方式将这两个模块引入,如下 继承与聚合 继…

xxe攻击(XML外部实体)

1.定义 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。 http://www.w3school.com.…

初识操作系统

目录 一.操作系统的概念 二.正确理解“管理” 三.操作系统对硬件进行管理 四.系统调用接口 五.用户操作接口 一.操作系统的概念 操作系统是一款进行软硬件资源管理的软件 现在我们知道了操作系统的概念了,那么为什么要有操作系统呢? 操作系统将软…

李宏毅hw-9:Explainable ML

——欲速则不达,我已经很幸运了,只要珍惜这份幸运就好了,不必患得患失,慢慢来。 ----查漏补缺: 1.关于这个os.listdir的使用 2.从‘num_文件名.jpg’中提取出数值: 3.slic图像分割标记函数的作用&#xf…

光电探测器怎么选

光电探测器,也称为PD(photodetector) 基本原理是,光信号进入光电探测器转换为电压信号,这个电压信号会很弱,微伏或者毫伏级别。 所以PD分为带放大和不带放大 带放大呢,是因为信号太弱&#xf…

Vue系列(二)之 基础语法上篇【插值,指令,过滤器,计算属性监听属性】以及购物车实现

目录 一. 插值 1.1 文本 1.2 原始HTML 1.3 属性 1.4 表达式 二. 指令 2.1 v-if/v-else-if/v-else指令 2.2 v-show指令 2.3 v-for指令 2.4 下拉框/复选框 2.5 动态参数 三. 过滤器 3.1 局部过滤器基本应用 3.2 局部过滤器串行使用 3.3 局部过滤器传参 3.4 全局过…

内存映射的注意事项

1.如果对mmap的返回值(ptr)做操作(ptr),munmap是否能够成功? 可以,但是不建议 2.如果open时O_RDONLY,mmap时prot参数指定PROT READPROT WRITE会怎样? 错误,返回MAP_FAILED open()函数中的权限建议和prot参数的权限保持…

GsonUtils和字符串

文章目录 1、GsonUtils2、String本身,可以加入日志信息3、 Json和Map转换4、Date转为Json字符串5、Json和List<T>转换6、 比较两个JSON字符串的不同7、 字符串填充&#xff1a;生成单据号时填充8、 String.format()的使用9、截断字符串10、splitisNotBlank 和 isNotEmpty…

QT学习之创建项目

1、添加快捷键到桌面 找到所在安装路径Qt5.14.1\Tools\QtCreator\bin添加至桌面 双击后打开 2、创建项目 点击下一步 再点击下一步 下一步 当前暂时选择32位&#xff0c;之后点击完成 3、进入编辑页面并运行 运行快捷键&#xff1a;CtrlR 运行界面点击按钮&#xff1a; 运行…

C# 如何使用windows服务做定时任务

在 C# 中&#xff0c;你可以使用 Windows 服务来创建定时任务。以下是创建定时任务的步骤&#xff1a; 创建一个新的 Windows 服务项目&#xff1a; 打开 Visual Studio。选择 “创建新项目”。在搜索框中搜索 “Windows 服务”。选择 “Windows 服务” 模板&#xff0c;并设置…

单臂路由的详细配置步骤

1、单臂路由概述 单臂路由&#xff08;router-on-a-stick&#xff09;是指在路由器的一个接口上通过配置子接口&#xff08;或“逻辑接口”&#xff0c;并不存在真正物理接口&#xff09;的方式&#xff0c;实现原来相互隔离的不同VLAN&#xff08;虚拟局域网&#xff09;之间…

C++笔记之引用折叠规则

C笔记之引用折叠规则 文章目录 C笔记之引用折叠规则1. 当两个左值引用结合在一起时&#xff0c;它们会折叠成一个左值引用。2. 当一个左值引用和一个右值引用结合在一起时&#xff0c;它们会折叠成一个左值引用。3. 当两个右值引用结合在一起时&#xff0c;它们也会折叠成一个右…

【网络协议】Http-上

Http请求结构&#xff1a; 结构图1&#xff1a; 实验解析请求报文&#xff1a; 1.在Edge浏览器上输入ip地址端口号文件资源&#xff0c;也就是下图中的120.XX.139.29:8888/A/B/c.html 2.我的程序接收到了一个没有有效载荷的http请求(呼应上面的结构图1)&#xff0c;如下 GET …