深度学习篇--- transform(转换器)
1. 核心比喻厨房烹饪流水线想象你是一个厨师要做一道菜比如炒菜。原始食材数据不能直接下锅需要预处理生蔬菜原始数据 → 清洗StandardScaler → 切块OneHotEncoder → 调味添加特征 → 成品可用于炒菜的食材在机器学习中这个预处理流程就是transform2. 最简单的 transform 例子标准化场景把考试成绩从“0-100分”变成“平均0标准差1”的标准分import numpy as np from sklearn.preprocessing import StandardScaler # 原始成绩4个学生2门课 # 中文和数学成绩每门课满分不同 raw_scores np.array([ [85, 150], # 学生1语文85数学150 [60, 120], # 学生2语文60数学120 [95, 180], # 学生3语文95数学180 [70, 135] # 学生4语文70数学135 ]) print(原始成绩) print(raw_scores) print(f语文平均分: {raw_scores[:, 0].mean():.1f}, 数学平均分: {raw_scores[:, 1].mean():.1f})输出原始成绩 [[ 85 150] [ 60 120] [ 95 180] [ 70 135]] 语文平均分: 77.5, 数学平均分: 146.2问题两门课分数范围不一样比较不公平解决方案标准化StandardScaler# 创建转换器就像请一个专门的标准化工序师傅 scaler StandardScaler() # 步骤1先学习fit- 师傅看数据记住平均值和标准差 scaler.fit(raw_scores) # 师傅说我知道了语文平均77.5标准差... # 步骤2再转换transform- 师傅开始工作 standard_scores scaler.transform(raw_scores) print(\n标准化后的成绩) print(standard_scores) print(f\n现在每门课平均分 {standard_scores.mean():.3f}) print(f每门课标准差 {standard_scores.std():.3f})输出标准化后的成绩 [[ 0.47243196 0.22601794] [-1.08761082 -1.14981194] [ 1.08761082 1.50758041] [-0.47243196 -0.58378641]] 现在每门课平均分 0.000 每门课标准差 1.0003. transform 的两步结构先学再做关键理解fit只看数据学习规则不改变数据transform应用规则转换数据fit_transform两步合并一步完成4. 常用 transform 示例大全示例1MinMaxScaler - 缩放到固定范围from sklearn.preprocessing import MinMaxScaler # 把成绩缩放到 0-1 范围常用于神经网络 scores np.array([85, 60, 95, 70]).reshape(-1, 1) # 需要二维 scaler MinMaxScaler() scaled scaler.fit_transform(scores) print(原始成绩:, scores.flatten()) print(缩放后0-1:, scaled.flatten()) print(f转换规则: 最小值{scaler.data_min_[0]}, 最大值{scaler.data_max_[0]})输出原始成绩: [85 60 95 70] 缩放后0-1: [0.71428571 0. 1. 0.28571429] 转换规则: 最小值60.0, 最大值95.0示例2OneHotEncoder - 文字变数字from sklearn.preprocessing import OneHotEncoder # 学生的年级初一、初二、初三 grades np.array([[初一], [初三], [初二], [初一], [初三]]) encoder OneHotEncoder(sparse_outputFalse) encoded encoder.fit_transform(grades) print(原始年级:) print(grades.flatten()) print(\n独热编码后每个年级一列1表示是0表示不是:) print(encoded) print(f\n编码器记住的类别: {encoder.categories_})输出text原始年级: [初一 初三 初二 初一 初三] 独热编码后每个年级一列1表示是0表示不是: [[1. 0. 0.] [0. 0. 1.] [0. 1. 0.] [1. 0. 0.] [0. 0. 1.]] 编码器记住的类别: [array([初一, 初二, 初三], dtypeobject)]示例3SimpleImputer - 填充缺失值from sklearn.impute import SimpleImputer # 有缺失的成绩表NaN表示缺考 scores_with_missing np.array([ [85, 90], [np.nan, 75], # 语文缺考 [92, np.nan], # 数学缺考 [70, 85] ]) print(原始数据有缺失:) print(scores_with_missing) imputer SimpleImputer(strategymean) # 用平均值填充 filled imputer.fit_transform(scores_with_missing) print(\n填充后用平均值填充NaN:) print(filled) print(f\n填充的值: 语文{imputer.statistics_[0]:.1f}, 数学{imputer.statistics_[1]:.1f})输出原始数据有缺失: [[85. 90.] [nan 75.] [92. nan] [70. 85.]] 填充后用平均值填充NaN: [[85. 90. ] [82.33 75. ] [92. 83.33] [70. 85. ]] 填充的值: 语文82.33, 数学83.335. 完整的 transform 流水线Pipelinefrom sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler, OneHotEncoder from sklearn.compose import ColumnTransformer # 模拟学生数据 student_data np.array([ # 语文分, 数学分, 年级 [85, 150, 初一], [60, 120, 初三], [95, 180, 初二], [70, 135, 初一] ]) # 拆分成特征 X_numeric student_data[:, :2].astype(float) # 前两列是数值 X_categorical student_data[:, 2].reshape(-1, 1) # 第三列是文字 print(原始数据:) print(student_data) # 创建转换管道 numeric_transformer Pipeline(steps[ (scaler, StandardScaler()) # 数值标准化 ]) categorical_transformer Pipeline(steps[ (onehot, OneHotEncoder()) # 文字编码 ]) # 组合转换器 preprocessor ColumnTransformer( transformers[ (num, numeric_transformer, [0, 1]), # 列0-1用数值转换 (cat, categorical_transformer, [2]) # 列2用分类转换 ] ) # 一步完成学习规则 转换 transformed preprocessor.fit_transform(student_data) print(\n转换后的数据:) print(transformed) print(f\n形状: {transformed.shape}) print(说明: 前2列是标准化成绩后3列是年级的独热编码)6. transform 在 PyTorch 中的样子import torch import torch.nn as nn # PyTorch 也有 transform通常通过 nn.Module 实现 class SimpleNormalizer(nn.Module): 自定义标准化转换器 def __init__(self): super().__init__() self.mean None self.std None def fit(self, X): 学习规则 self.mean X.mean(dim0) self.std X.std(dim0) return self def transform(self, X): 应用转换 return (X - self.mean) / self.std def forward(self, X): PyTorch风格 return self.transform(X) # 使用示例 X_tensor torch.tensor([[85.0, 150.0], [60.0, 120.0], [95.0, 180.0], [70.0, 135.0]]) normalizer SimpleNormalizer() normalizer.fit(X_tensor) X_normalized normalizer.transform(X_tensor) print(PyTorch转换结果:) print(X_normalized) print(f平均值: {X_normalized.mean(dim0)}) print(f标准差: {X_normalized.std(dim0)})7. 什么时候用 transform✅必须用 transform 的情况不同尺度特征身高米 vs 体重公斤文字特征性别、城市、颜色缺失值有缺考、缺勤记录异常值特别高或特别低的分数非线性关系需要多项式特征❌不需要 transform 的情况所有特征已经是 0-1 范围树模型随机森林、决策树通常不需要标准化只有一两个简单特征8. 常见错误和正确用法❌ 错误用法# 错误1用训练集规则转换测试集 scaler StandardScaler() X_train_scaled scaler.fit_transform(X_train) X_test_scaled scaler.fit_transform(X_test) # 错误应该用transform不是fit_transform # 错误2在拆分数据前转换 X_scaled scaler.fit_transform(all_data) # 泄露了测试集信息✅ 正确用法# 正确流程 scaler StandardScaler() # 只在训练集上学习规则 X_train_scaled scaler.fit_transform(X_train) # 用同样的规则转换测试集 X_test_scaled scaler.transform(X_test) # 注意只有transform 一句话总结transform 厨房预处理fit 师傅看菜谱学习怎么做transform 师傅动手处理食材fit_transform 师傅边学边做但只用于训练数据记住测试集只用transform不用fit否则就是作弊

相关新闻

linux内核伙伴系统分配物理页面时水位判断zone_watermark_ok

linux内核伙伴系统分配物理页面时水位判断zone_watermark_ok

linux内核物理页面分配函数alloc_pages(...)在进行页面分配时非常重要的一个步骤就是判断当前Zone中可用页面减去分配需求页面后的剩余可用页面和低水位值(ALLOC_WMARK_LOW)之间的关系,如果低于最水位值则开始直接回收,否则可以继续分配。 其中判断关键步骤由函数zo…

2026/7/4 14:24:21 阅读更多 →
Windows下快速安装Python GDAL指南

Windows下快速安装Python GDAL指南

在Windows系统下安装GDAL包(适用于Python 3.7版本)的完整指南: 步骤1:确认环境信息 打开命令提示符(cmd)执行: python -c "import platform; print(platform.architecture()[0], platfo…

2026/7/3 15:31:38 阅读更多 →
AI模型训练:数据获取与增强

AI模型训练:数据获取与增强

数据是训练一切模型的基础,因此如何获取数据就成了一个先行条件。 1.常见的机器学习数据集 (1)MNIST 属于计算机视觉领域,手写数字灰度图,包含有六万的训练集以及一万的测试集。 (2)ImageNet…

2026/7/3 15:31:40 阅读更多 →

最新新闻

PostgreSQL与MySQL比较

PostgreSQL与MySQL比较

PostgreSQL与MySQL比较 摘要 在当今数据驱动的时代,关系型数据库仍然是绝大多数应用系统的核心基础设施。开源数据库领域,PostgreSQL与MySQL长期占据主导地位,两者在发展哲学、架构设计、功能特性和许可模式上存在深刻差异。PostgreSQL以对…

2026/7/5 8:26:20 阅读更多 →
深入NVIDIA驱动的隐藏世界:用Profile Inspector解锁显卡潜能

深入NVIDIA驱动的隐藏世界:用Profile Inspector解锁显卡潜能

深入NVIDIA驱动的隐藏世界:用Profile Inspector解锁显卡潜能 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 当你在游戏世界中驰骋时,是否曾想过显卡驱动里还藏着许多未公开的宝…

2026/7/5 8:24:19 阅读更多 →
2026年最新揭秘!这些梳子生产厂家排名,你知道几个?

2026年最新揭秘!这些梳子生产厂家排名,你知道几个?

痛点深度剖析 我们团队在实践中发现,梳子行业存在诸多实际技术困境。市面上普通木梳多为机器量产,工艺粗糙、梳齿尖锐,实测数据显示,使用这类梳子时,易扎头皮、拉扯发丝的情况高达80%,严重损伤发质与头皮。…

2026/7/5 8:24:19 阅读更多 →
SkillComposer:当你的 Skill 库超过 80 个,模型怎么知道选哪个?

SkillComposer:当你的 Skill 库超过 80 个,模型怎么知道选哪个?

来源:arXiv:2606.32025(2026-07-01 提交),发布于 arXiv cs.CL / cs.AI 核心标签:Skill 组合、约束自回归解码、任务条件序列预测、技能依赖建模一、为什么你现在应该读这篇 如果你维护的 Agent 系统里 Skill 数量已经涨…

2026/7/5 8:24:19 阅读更多 →
Blender 3MF插件:从创意到3D打印的无缝桥梁

Blender 3MF插件:从创意到3D打印的无缝桥梁

Blender 3MF插件:从创意到3D打印的无缝桥梁 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否曾经在Blender中精心设计的模型,在导出到3D打印…

2026/7/5 8:22:19 阅读更多 →
Java实战:解析Navicat连接加密机制与密码恢复

Java实战:解析Navicat连接加密机制与密码恢复

1. 项目概述:为什么我们需要关注Navicat的连接加密作为一名常年和数据库打交道的Java开发者,Navicat几乎是工具箱里的标配。它图形化的界面、便捷的数据操作和连接管理,极大地提升了我们的工作效率。但不知道你有没有遇到过这样的场景&#x…

2026/7/5 8:14:18 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻