机器学习——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️⃣ 划分测…

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 全局过…

QT学习之创建项目

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

单臂路由的详细配置步骤

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

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

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

【网络协议】Http-上

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

Python机器学习实战-特征重要性分析方法(1):排列重要性(附源码和实现效果)

实现功能 排列重要性 PermutationImportance:该方法会随机排列每个特征的值,然后监控模型性能下降的程度。如果获得了更大的下降意味着特征更重要 实现代码 from sklearn.datasets import load_breast_cancer from sklearn.ensemble import RandomFore…

C语言之字符函数字符串函数篇(2)

目录 字符串查找 strstr strstr的使用 strstr的模拟实现 分析 考虑点 代码 strt strtok的使用 循环改进 错误信息报告 strerror 错误码的错误信息 strerror的使用 perror 字符操作 字符分类函数 字符转化函数 今天我们接着讲字符串函数,也…

balenaEtcher格式化的U盘恢复原来样子

今天用balenaEtcher烧录了U盘,刷机N1盒子openwrt, 刷完机结果发现自己的U盘电脑最后只有167M 想要恢复原来的64G以下是方法,使用win10系统 1、打开命令行cmd(winr打开运行,在其中输入cmd就可以打开); 2…

C++QT day11

绘制时钟 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPaintEvent>//绘制事件类 #include <QDebug>//信息调试类 #include <QPainter>//画家类 #include <QTimer>//定时器类 #include <QTime> #include &…

Android---打开相机拍照

简单实现打开系统系统相机拍一张图片并显示在UI上&#xff0c;适用与个人主页头像的切换。 1. 添加权限。AndroidManifest.xml里添加使用相机的权限。 <uses-permission android:name"android.permission.CAMERA"/> 2. 布局。布局内容比较交单&#xff0c;一…

leetcode21合并两个有序链表

题目&#xff1a; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff1a; 输入&#xff1a;l1 [], l2 [] 输…