简记:机器学习中关于训练集和测试集的标准化问题

01 错误处理

对于标准化统一量纲问题,我之前一直是这么处理,我也从来没有意识到问题,这里记录一下:

错误处理:在未进行数据集划分之前,对所有特征项(X/因子项)进行标准化例如MinMaxScaler\Normalizer等方法,然后再进行数据集划分;或者在数据集划分之后分别对训练集和测试集进行独立的标准化。

02 为什么

如果对整个特征项进行归一化,那么测试集的信息在一定程度上已经被用于训练集的标准化过程中,因为归一化的参数是基于整个特征项进行计算的,这在一定程度上造成了数据泄露。这会导致模型评估的结果过于乐观,不利于模型在实际应用的泛化性/鲁棒性。

而对于第二种分别独立标准化,会导致两个问题:

  1. 不一致的标度:由于分别进行标准化意味着是依据各自的均值和标准差进行缩放,导致标度不一致。例如相同的原始值,在训练集和测试集的缩放值不一致。
  2. 泛化能力:测试集独立标准化使得它不再是训练模型时的真实环境模拟,模型在训练时学习到的特征权重可能无法正确适用于测试数据。

03 正确处理

应该对训练集进行标准化,并利用训练集计算得到的标准化参数对测试集进行标准化。

例如,如果使用MinMaxScaler,那么参数一般有训练集的最大值Max、最小值Min,因此对于训练集正常标准化,而对于测试集则应该使用训练集的参数进行标准化。

具体地,在代码中:

from sklearn.preprocessing import MinMaxScaler# 训练测试集划分
train_ds = df[df[time_col_name] <= split_time]
test_ds = df[df[time_col_name] > split_time]
# 标准化
scaler = MinMaxScaler()  # 标准化器
train_ds.loc[:, x_col_names] = scaler.fit_transform(train_ds.loc[:, x_col_names])  # fit即拟合获取标准化参数, transform即基于参数进行标准化
test_ds.loc[:, x_col_names] = scaler.transform(test_ds.loc[:, x_col_names])  # 注意标准化不能独立对测试集进行, 标准化参数应来源于训练集

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

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

相关文章

自动驾驶中的深度学习和计算机视觉

书籍&#xff1a;Applied Deep Learning and Computer Vision for Self-Driving Cars: Build autonomous vehicles using deep neural networks and behavior-cloning techniques 作者&#xff1a;Sumit Ranjan&#xff0c;Dr. S. Senthamilarasu 出版&#xff1a;Packt 书籍…

算法设计与分析4.1 迷宫问题 栈与队列解法、打印矩阵、三壶问题、蛮力匹配

1.ROSE矩阵 实现&#xff1a; 使用算法2 分析&#xff1a; 每半圈元素值的增长规律变换一次 设增量为t&#xff0c;每半圈变换一次t <— -t . 设矩阵边长为i&#xff0c;每半圈的元素个数是2*(i-1)个&#xff0c;hc为记数变量&#xff0c;则1≤hc<2i-1&#xff0c;前1/…

[华为OD]C卷 找座位,在一个大型体育场内举办了一场大型活动,由于疫情防控的需要 100

题目&#xff1a; 在一个大型体育场内举办了一场大型活动&#xff0c;由于疫情防控的需要&#xff0c;要求每位观众的必须间隔至 少一个空位才允许落座。现在给出一排观众座位分布图Q,座位中存在已落座的观众&#xff0c;请计 算出&#xff0c;在不移动现有观众座位的情况…

Linux中ssh登录协议

目录 一.ssh基础 1.ssh协议介绍 2.ssh协议的优点 3.ssh文件位置 二.ssh原理 1.公钥传输原理&#xff08;首次连接&#xff09; 2.ssh加密通讯原理 &#xff08;1&#xff09;对称加密 &#xff08;2&#xff09;非对称加密 3.远程登录 三.服务端的配置 常用的配置项…

vscode 配置与插件记录

vscode插件 python PythonPython DebuggerruffisortPylanceJupyterJupyter KeymapJupyter Slide ShowJupyter Cell TagsautoDocstring - Python Docstring Generator ruff isort pylance autodocsting 在setting.json里这么配置&#xff0c;这样你保存时就会自动format…

Matlab|含sop的33节点配电网优化

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 程序以IEEE33节点为例&#xff0c;分析含sop的配电网优化&#xff0c;包括sop有功约束、无功约束和容量约束&#xff0c;非线性部分通过转换为旋转锥约束进行编程&#xff0c;并且包括33节点配电网潮流及对应…

Re69:读论文 LaMDA: Language Models for Dialog Applications

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称&#xff1a;LaMDA: Language Models for Dialog Applications ArXiv网址&#xff1a;https://arxiv.org/abs/2201.08239 本文介绍谷歌提出的对话大模型LaMDA&#xff0c;主要关注对各项指标&#x…

智慧能源数据监控平台

随着科技的飞速发展&#xff0c;能源管理已逐渐从传统的粗放型向精细化、智能化转变。在这个转型过程中&#xff0c;HiWoo Cloud平台的智慧能源数据监控平台以其独特的技术优势和创新理念&#xff0c;正引领着能源管理的新潮流。 一、智慧能源数据监控平台的概念 智慧能源数据…

经典文献阅读之--SurroundOcc(自动驾驶的环视三维占据栅格预测)

0. 简介 环视BEV已经是很多场景中需要的功能&#xff0c;也是视觉代替激光雷达的有效解决方案&#xff0c;而《SurroundOcc: Multi-camera 3D Occupancy Prediction for Autonomous Driving》一吻则代表了这个领域的SOTA算法&#xff0c;文中通过多帧点云构建了稠密占据栅格数据…

微信小程序for循环示例(JavaScript)

微信小程序for循环示例&#xff08;JavaScript&#xff09; 在微信小程序开发中&#xff0c;我们最常用的循环方式就是for和foreach&#xff0c;接下来我就浅浅的将自己的写的一小段示例代码分享给大家。 首先是for循环&#xff0c;也是咱们最常用的方式&#xff0c;具体示例…

python爬虫插件XPath的安装

概要 XPath Helper是一款专用于chrome内核浏览器的实用型爬虫网页解析工具。XPath可以轻松快捷地找到目标信息对应的Xpath节点&#xff0c;获取xpath规则&#xff0c;并提取目标信息&#xff0c;并进行校对测试&#xff1b;可对查询出的xpath进行编辑&#xff0c;正确编辑的结…

微信开发api、微信视频号开发

接口地址&#xff1a; http://api.videostui.com/finder/v2/api/login/checkLogin 接口说明 获取到登录二维码后需每间隔5s调用本接口来判断是否登录成功新设备登录平台&#xff0c;次日凌晨会掉线一次&#xff0c;重新登录时需调用获取二维码且传appId取码&#xff0c;登录成…

课程34:Windows Docker部署.Net Core项目

这里写目录标题 🚀前言一、安装Docker Desktop1.1 官网下载Docker1.2 安装Docker1.2.1 选择配置,默认都勾选1.2.2 安装中1.2.3 安装成功1.2.4 启动1.2.5 启动成功二、.Net Core 项目发布与部署2.1 修改Dockerfile文件2.2 Web项目发布2.3 修改配置2.3.1 修改dockerfile<

android studio拍照功能问题解决

1.点击拍照功能直接闪退 2.拍照后不能选择确认键&#xff0c;无法保存 上述是在android studio做项目中经常会使用到模拟器或真机的拍照功能时主要遇到的两个问题。 解决方法&#xff1a; 1.直接闪退问题&#xff1a; if(Build.VERSION.SDK_INT>Build.VERSION_CODES.N)…

关于使用SpringSecurity框架发起JSON请求,但因登陆失效导致响应403的问题。

这里记录一个生产中遇到的一个问题。 现有环境是基于SpringBoot 2.6.8&#xff0c;然后是前后台一体化的项目。 安全框架使用的是内置版本的SpringSecurity。 在实际使用过程中遇到一个问题。 就是当用户登陆失效后&#xff0c;前端操作JSON请求获取列表数据&#xff0c;但…

323_C++_QT_使用QProcess执行cmd解压tar.gz等等其他压缩包文件到指定目录,不需要外部库,QT自带API的就行

// decompressPath : 解压到此目录 // fileName : 解压的tar.gz文件名executeCommand(decompressPath , QString::fromStdString(fileName));// 开始解压 void executeCommand

visual studio code安装Clicknium

visual studio code下载安装 Download Visual Studio Code - Mac, Linux, Windows 安装python extend&#xff0c;需要把科学上网关了 clicknium 获取插件名 clicknium 录制教程 https://blog.51cto.com/u_16213624/7007362 实战教程&#xff1a; Python 自动化神器 Click…

上海亚商投顾:沪指创年内新高 房地产板块掀涨停潮

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数昨日继续反弹&#xff0c;沪指盘中涨超1%&#xff0c;重返3100点上方&#xff0c;深成指涨超2%&#…

如何确定当前项目是采用 Vite 还是 Vue CLI 项目

查看项目的配置文件和依赖 对于 Vite 项目&#xff1a; 检查项目根目录下是否有一个名为 vite.config.js 或 vite.config.ts 的文件。这是 Vite 项目的配置文件。 在 package.json 文件中&#xff0c;查看 dependencies 和 devDependencies 部分是否包含 vite 和 vitejs/plug…

初探 JUC 并发编程:Java 并发包中并发 List 源码剖析

最近在阅读 《Java 并发编程之美》这本书&#xff0c;感觉学到了很多东西&#xff1b;所以我决定将从事书中学到的思想和一些经典的案例整理成博客的形式与大家分享和交流&#xff0c;如果对大家有帮助别忘了留下点赞和关注捏。 第五部分&#xff1a;Java 并发包中并发 List 源…