为什么要在测试集中不需要使用fit_transform的原因?

2023-11-15

假设我们有一组数据:[10,20,30],则标准化之后的数据为:
array([[-1.22474487],
[ 0. ],
[ 1.22474487]])
这组数据的均值为:20.0,标准差为:8.16496580927726 。标准化之后的这组数据,其标准差为1,均值为0。
假设我们的分类器在这组数据上得到一个规则,如果数据 x > 0.6 则类别为class 1,否则当 x <= 0.6时类别为calss 2,所以[10,20,30]的分类结果如下:
10 ------- class 2
20 ------- class 2
30 ------- class 1
现在假设我们有了另外一组需要分类的数据[5,6,7],先调用ss.fit_transform对其进行标准化,

ss.fit_transform(np.array([5,6,7]).reshape(-1,1))

1
结果为:
array([[-1.22474487],
[ 0. ],
[ 1.22474487]])
则按之前分类器的规则,分类结果如下:
5 ------- class 2
6 ------- class 2
7 ------- class 1
最终我们得到一个可笑的结果,7和30被分为class1,而5,6,10,20被分为class2。
而如果我们用[10,20,30]的均值20.0 标准差8.16496580927726 作为参数μ和σ的值来对[5,6,7]进行标准化:

ss.fit_transform(np.array([10,20,30]).reshape(-1,1))
ss.transform(np.array([5,6,7]).reshape(-1,1))

1
2
则[5,6,7]标准化的结果为:
array([[-1.83711731],
[-1.71464282],
[-1.59216833]])
然后用分类器分类,[5,6,7]均被分为class 2,这样就得到比较合理的结果了。
所以你会发现,对训练集进行fit_transform后,对测试集的标准化必须要用transform,绝对不能再用fit_transform,尤其是存在数据集的数据量比较小或数据集存在数据严重偏倚情况。

问题2:能不能先做标准化,再做 train_test_split?
当然不能。

比如在做机器学习鸢尾化分类时,你或许会编写如下代码:
(1)获取原数据

from sklearn.datasets import load_iris
iris = load_iris()

(2)分割数据集为训练集、测试集

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.25, random_state=33)

(3) 标准化

from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
X_train = ss.fit_transform(X_train)
X_test = ss.transform(X_test)

(4)定义模型、进行分类

from sklearn.neighbors import KNeighborsClassifier
knc = KNeighborsClassifier()
knc.fit(X_train, y_train)
y_predict = knc.predict(X_test)

(5)评价模型,这里选用模型的score方法

print(‘The accuracy of K-Nearest Neighbor Classifier is, knc.score(X_test, y_test))

**结果:**The accuracy of K-Nearest Neighbor Classifier is 0.8947368421052632

那为什么第(2)步和第(3)步不换一下呢?例如将标准化过程改为:

ss = StandardScaler()
iris.data = ss.fit_transform(iris.data)

问题1中,你或许发现训练集和测试集的衡量标准一致性是解决问题的关键,那现在把训练集和测试集都放在一块进行标准化岂不是更公平?!

在iris这个例子中,经上一步所谓的“改进”,分类器的准确率仍然是0.8947368421052632。但如果你拿其它数据集测试一下,你可能会发现分类器的准确率可能会提升,那是不是那些参考书上的例子有问题呢?
现发表一下自己的拙见:

(1)测试集的理解及过拟合
测试集就是明明类标号已知,但我们假设先不知道,充当将来可能要实际预测的一批评测分类器准确率的数据。

在分割数据集为训练集、测试集时,为我们通常调用了类似于教科书一般的这行代码

**`**`X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.25)。`**`**

其实测试集的类标号我们是知道的,它就是y_test。我们拿着X_train,y_train去训练得到一个分类器模型。然后用 预测X_test,得到y_predict,然后去跟所谓“准确”的 y_test比较,目的就是想看看这个分类器模型的准确率是多少

但y_test真的是将来类标号真不知道的数据吗?如果你先做标准化,再分割数据集,那答案显然不是。先做标准化,再分割训练集和测试集,其实是一种overfitting(过度贴合准确性,)。如果将来碰到一组之前没出现过的数据,那分类器的准确度就会显著下降了。

(2) 先做标准化再做分割数据集,其实无法体现分类的真实过程
先做标准化,把测试集和训练集合并在一块进行标准化,貌似公平,实则荒谬!

试想一个在训练集上得到的分类器,将来要对一个类标号未知的数据x进行分类。你能把它放到原始的训练集上,重新再做一次标准化吗?如果你愿意去做,考虑到训练集的数据量的大小吗?考虑到训练集你能获取到吗?考虑到待分类数据的输入不规律性了吗?
就像对数据机器学习训练后得到一个分类器,将来分类的时候,只要输入数据的特征,分类器就会返回分类结果,绝对不会拿输入数据到原始数据中先合并在一块跑一遍标准化,再分类给结果。而X_test = ss.transform(X_test),恰恰体现了这种真实性。

最后总结一下:
先分割训练集和测试集后再做标准化;训练集用fit_transform,测试集一定要用transform。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么要在测试集中不需要使用fit_transform的原因? 的相关文章

  • 详解数据科学自动化与机器学习自动化

    过去十年里 人工智能 AI 构建自动化发展迅速并取得了多项成就 在关于AI未来的讨论中 您可能会经常听到人们交替使用数据科学自动化与机器学习自动化这两个术语 事实上 这些术语有着不同的定义 如今的自动化机器学习 即 AutoML 特指模型构
  • 互操作性(Interoperability)如何影响着机器学习的发展?

    互操作性 Interoperability 也称为互用性 即两个系统之间有效沟通的能力 是机器学习未来发展中的关键因素 对于银行业 医疗和其他生活服务行业 我们期望那些用于信息交换的平台可以在我们需要时无缝沟通 我们每个人都有成千上万个数据
  • ResNet实战:CIFAR-10数据集分类

    本节将使用ResNet实现CIFAR 10数据集分类 7 2 1 CIFAR 10 数据集简介 CIFAR 10数据集共有60000幅彩色图像 这些图像是32 32像素的 分为10个类 每类6000幅图 这里面有50000幅用于训练 构成了
  • LLama Factory 实操记录(一)

    1 api端口参数说明 src api h help 显示帮助信息并退出 model name or path MODEL NAME OR PATH 模型权重的路径或标识符 来自 huggingface co models 或 models
  • 使用pytorch构建图卷积网络预测化学分子性质

    在本文中 我们将通过化学的视角探索图卷积网络 我们将尝试将网络的特征与自然科学中的传统模型进行比较 并思考为什么它的工作效果要比传统的方法好 图和图神经网络 化学或物理中的模型通常是一个连续函数 例如y f x x x x 其中x x x
  • MIT_线性代数笔记:第 23 讲 微分方程和 exp(At)

    目录 微分方程 Differential equations 矩阵指数函数 Matrix exponential e A t e At
  • 【深度学习】从huggingface上加载数据集到本地并保存为csv文件

    场景 想从huggingface上下载yelp数据集 并以csv格式保存到本地 方法 1 git clone 首先通过git在线下载数据集的相关配置文件 git代理配置参考 链接 终端上执行如下命令 1 git clone https hu
  • 【深度学习:(Contrastive Learning) 对比学习】深入浅出讲解对比学习

    对比学习允许模型从未标记的数据中提取有意义的表示 通过利用相似性和不相似性 对比学习使模型能够在潜在空间中将相似的实例紧密地映射在一起 同时将那些不同的实例分开 这种方法已被证明在计算机视觉 自然语言处理 NLP 和强化学习等不同领域都是有
  • BEV+Transformer感知架构共识下,传感器「火药味」再升级

    高阶智能驾驶战火愈演愈烈 正带动感知方案卷入新一轮军备竞赛 根据高工智能汽车研究院最新发布数据显示 2023年1 9月 中国市场 不含进出口 乘用车前装标配 软硬件 NOA交付新车37 73万辆 同比上年同期增长151 20 未来几年内 N
  • 图神经网络与智能教育:创新教育技术的未来

    导言 图神经网络 GNNs 和智能教育技术的结合为教育领域注入新活力 本文深入研究二者的结合可能性 涉及各自侧重 当前研究动态 技术运用 实际场景 未来展望 并提供相关链接 1 图神经网络与智能教育的结合方向 1 1 图神经网络在教育技术中
  • 蒙牛×每日互动合作获评中国信通院2023“数据+”行业应用优秀案例

    当前在数字营销领域 品牌广告主越来越追求品效协同 针对品牌主更注重营销转化的切实需求 数据智能上市企业每日互动 股票代码 300766 发挥自身数据和技术能力优势 为垂直行业的品牌客户提供专业的数字化营销解决方案 颇受行业认可 就在不久前举
  • 论文查重部分算不算重复率呢

    大家好 今天来聊聊论文查重部分算不算重复率呢 希望能给大家提供一点参考 以下是针对论文重复率高的情况 提供一些修改建议和技巧 可以借助此类工具 论文查重部分算不算重复率呢 在论文查重过程中 查重部分是否计入重复率是一个关键问题 本文将从七个
  • Google Earth Engine(GEE)深度学习入门教程- GEE导出篇

    GEE导出篇 官方教程 TFRecord 和地球引擎 在GEE的JS Code Editor中 我们按照我们的需要去处理对应的遥感影像 得到处理后Image影像 为了导出后读取数据 在导出前 一定清楚每个波段的名称 不然没法读取 深度学习数
  • 基于GPT4+Python近红外光谱数据分析及机器学习与深度学习建模

    详情点击链接 基于ChatGPT4 Python近红外光谱数据分析及机器学习与深度学习建模教程 第一 GPT4 基础 1 ChatGPT概述 GPT 1 GPT 2 GPT 3 GPT 3 5 GPT 4模型的演变 2 ChatGPT对话初
  • 机器学习:基于python微博舆情分析系统+可视化+Django框架 K-means聚类算法(源码)✅

    博主介绍 全网粉丝10W 前互联网大厂软件研发 集结硕博英豪成立工作室 专注于计算机相关专业 毕业设计 项目实战6年之久 选择我们就是选择放心 选择安心毕业 感兴趣的可以先收藏起来 点赞 关注不迷路 毕业设计 2023 2024年计算机毕业
  • 用CHAT分析高校体育智慧教学体系构建与探索研究现状

    CHAT回复 现阶段 高校体育智慧教学体系的构建与探索研究还处于初级阶段 但全球数字化转型大潮的推动下 一些较为前沿的研究和实践已经开始出现 1 教学平台的建设 很多高校已经开始尝试使用在线教育平台进行体育教学 把传统的面对面授课模式转变为
  • 毕业设计:基于深度学习的微博谣言检测系统 人工智能

    目录 前言 设计思路 一 课题背景与意义 二 算法理论原理 三 检测的实现 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有
  • 2024 人工智能与大数据专业毕业设计(论文)选题指导

    目录 前言 毕设选题 选题迷茫 选题的重要性 更多选题指导 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生
  • 机器学习算法实战案例:BiLSTM实现多变量多步光伏预测

    文章目录 1 数据处理 1 1 导入库文件 1 2 导入数据集 1 3 缺失值分析 2 构造训练数据
  • 史上最全自动驾驶岗位介绍

    作者 自动驾驶转型者 编辑 汽车人 原文链接 https zhuanlan zhihu com p 353480028 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 求职交流 技术交流群 本

随机推荐

  • 遗传算法整理

    1 基本概念 使用群体搜索技术 将种群代表一组问题解 通过对当前种群施加选择 交叉和变异等一系列遗传操作来产生新一代种群 并逐步使种群进化到包含近似最优解的状态 2 遗传算法流程 3 标准遗传算法 标准遗传算法又称为经典遗传算法 它的优化变
  • 百度搭台,千家打擂,文心杯创业大赛成投资人新宠?

    百模大战 打响 掀起大模型领域 创业热潮 今年5月31日 百度启动 文心杯 创业大赛 后简称 大赛 不到1个月报名时间 吸引近1000个项目激烈角逐 在知名投资人和AI专家的权威评审和层层筛选后 40个潜力项目闯入 决赛圈 进行最终较量 大
  • Python数据可视化的例子——热力图(heatmap)

    关系型数据的可视化 热力图体现了两个离散变量之间的组合关系 热力图 有时也称之为交叉填充表 该图形最典型的用法就是实现列联表的可视化 即通过图形的方式展现两个离散变量之间的组合关系 读者可以借助于seaborn模块中的heatmap函数 完
  • skopt下载

    在pycharm中直接下载skopt时失败 网上有如下解决办法 在python当前位置执行下载 1 先安装scikit optimize pip install scikit optimize 后直接在pycharm中安装skopt成功 若
  • fastJson注解@JSONField指定字段的顺序

    使 ordinal指定字段的顺序 public class BasePackage JSONField ordinal 1 private int id JSONField ordinal 2 private int direction J
  • mysql数据库管理-FEDERATED存储引擎远程链接MYSQL+ORACLE

    一 FEDERATED存储引擎 01 从5 1 26开始 默认MySQL不启用federated存储引擎 所以需要在my cnf中加入federated选项 02 或是在命令行用 federated选项启动mysqld 1 1 说明 mys
  • ubuntu下修改用户的默认目录

    linux系统下 不同的用户有对应的默认目录设置 这些设置都被保存在配置文件 etc passwd中 由上我们可以看出 对于用户名为JACK的用户 其系统默认目录为 home JACK 那么有时候我们可能在JACK目录下新建了一个目录 co
  • 大模型:如何利用旧的tokenizer训练出一个新的来?

    背景 我们在用chatGPT或者SD的时候 发现如果使用英语写提示词得到的结果比我们使用中文得到的结果要好很多 为什么呢 这其中就有一个叫做tokenizer的东西在作怪 训练一个合适的tokenizer是训练大模型的基础 我们既可以从头开
  • actuator--基础--6.3--端点解析--loggers端点

    actuator 基础 6 3 端点解析 loggers端点 代码位置 https gitee com DanShenGuiZu learnDemo tree master actuator learn actuator01 1 介绍 用于
  • 使用Selenium自动化测试web程序

    Selenium 是目前用的最广泛的Web UI 自动化测试框架 核心功能就是可以在多个浏览器上进行自动化测试 支持多平台 windows linux MAC 支持多浏览器 ie ff safari opera chrome 多语言C ja
  • GB28181设备接入侧如何支持H.265?

    技术背景 一直以来 GB28181 2022之前的规范版本让人诟病的一点 没有明确针对H 265的说明 特别是监控摄像机 H 265已然成为标配 GB T28181 2022规范 终于针对H 265做了明确的说明 让我们来一起解读下规范 基
  • differential privacy 差分隐私入门 (二)

    书接上回 对差分隐私比较感兴趣 看了几篇文章 了解一下大概的思想 现在决定重新看一下 发现有些文章内容不是很懂 干脆就一边翻译一边看了 不懂的地方我会加下划线 如果有人看到了 还请不吝指教 注 文章是Cynthia Dwork的 Di er
  • JavaSE复习:数组

    数组 Array 是多个相同类型数据按一定顺序排列 的集合 并使用一个名字命名 并通过编号的方式 对这些数据进行统一管理 数组的常见概念 数组名 下标 或索引 元素 数组的长度 1 数组本身是引用数据类型 而数组中的元素可以是任何数据类型
  • curl访问https报错:Cert verify failed: BADCERT_NOT_TRUSTED

    这个错跟https blog csdn net lixuande19871015 article details 88788699里面的错误看上去有些不太一样 curl v https www baidu com Cert verify f
  • 神经网络记忆_带记忆的神经网络

    神经网络记忆 深度学习 DEEP LEARNING We always heard that Neural Networks NNs are inspired by biological neural networks This huge
  • 初探TVM--TVM优化resnet50

    测试用TVM编译出的resnet50在CPU上的效果 测试resnet50在CPU上的效果 编译后的resnet50模型 图像预处理 运行编译后的模型 查看输出结果 resnet50自动调优 模型调优 auto tune 编译调优过的模型
  • Java: Observer Patterns

    版权所有 2022 涂聚文有限公司 许可信息查看 描述 观察者模式 Observer Patterns 也叫做发布 订阅模式 Publist Subscribe 模型 视图模式 Model View 源 监听器 Source Listene
  • [毕业设计]最新通信工程专业毕设选题题目推荐汇总

    文章目录 1前言 2 如何选题 3 通信工程选题方向 3 1 移动通信方向 3 2 嵌入式开发方向 3 3 人工智能方向 3 4 物联网方向 3 5 算法研究方向 3 6 移动应用开发方向 3 7 网络通信方向 3 8 学长作品展示 4 最
  • DevOps到底是什么意思?

    提到DevOps这个词 我相信很多人一定不会陌生 作为一个热门的概念 DevOps近年来频频出现在各大技术社区和媒体的文章中 备受行业大咖的追捧 也吸引了很多吃瓜群众的围观 那么 DevOps是什么呢 有人说它是一种方法 也有人说它是一种工
  • 为什么要在测试集中不需要使用fit_transform的原因?

    假设我们有一组数据 10 20 30 则标准化之后的数据为 array 1 22474487 0 1 22474487 这组数据的均值为 20 0 标准差为 8 16496580927726 标准化之后的这组数据 其标准差为1 均值为0 假