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

devtools/2024/9/24 17:41:51/

01 错误处理

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

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

02 为什么

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

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

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

03 正确处理

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

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

具体地,在代码中:

python">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.ppmy.cn/devtools/24601.html

相关文章

【算法基础实验】图论-UnionFind连通性检测之quick-union

Union-Find连通性检测之quick-union 理论基础 在图论和计算机科学中&#xff0c;Union-Find 或并查集是一种用于处理一组元素分成的多个不相交集合&#xff08;即连通分量&#xff09;的情况&#xff0c;并能快速回答这组元素中任意两个元素是否在同一集合中的问题。Union-Fi…

基于Spring Boot的外卖点餐系统设计与实现

基于Spring Boot的外卖点餐系统设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 网站首页界面图&#xff0c;通过进入网站可以查看首页、…

【UnityShader入门精要学习笔记】第十一章 Shader动画

本系列为作者学习UnityShader入门精要而作的笔记&#xff0c;内容将包括&#xff1a; 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更&#xff0c;有始无终 我的GitHub仓库 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 UnityShad…

Ridge,Lasso,Elasticnet回归

本文主要关于多元线性回归&#xff08;MSE&#xff09;与L1&#xff0c;L2范数结合在一起从而提高鲁棒性&#xff0c;即正则化应用于MSE产生的Ridge&#xff0c;Lasso&#xff0c;Elasticnet回归的内容。 一&#xff0c;Ridge回归 岭回归实质上就是普通的MSE加上一项L2惩罚项来…

Spark-机器学习(8)分类学习之随机森林

在之前的文章中&#xff0c;我们学习了分类学习之支持向量机决策树支持向量机&#xff0c;并带来简单案例&#xff0c;学习用法。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&a…

探索PyTorch:开源深度学习框架的魅力

PyTorch作为一款开源深度学习框架&#xff0c;已经在学术界和工业界广泛应用。其简洁易懂的API、动态计算图以及丰富的工具和接口&#xff0c;使得它成为了许多研究人员和工程师的首选。本文将深入探讨PyTorch与深度学习的紧密联系&#xff0c;从其核心特点、应用领域以及未来发…

Excel 中用于在一个范围中查找特定的值,并返回同一行中指定列的值 顺序不一样 可以处理吗

一、需求 Excel 中&#xff0c;在一列&#xff08;某范围内&#xff09;查找另一列特定的值&#xff0c;并返回同一行中另一指定列的值&#xff0c; 查找列和返回列的顺序不一样 二、 实现 1、下面是一个使用 INDEX 和 MATCH 函数的例子&#xff1a; 假设你有以下数据&…

电脑技巧:推荐一款非常好用的媒体播放器PotPlayer

目录 一、 软件简介 二、功能介绍 2.1 格式兼容性强 2.2 高清播放与硬件加速 2.3 自定义皮肤与界面布局 2.4 多音轨切换与音效增强 2.5 字幕支持与编辑 2.6 视频截图与录像 2.7 网络流媒体播放 三、软件特色 四、使用技巧 五、总结 一、 软件简介 PotPlayer播放器 …