news 2026/3/10 19:37:08

sklearn中fit、transform、fit_transform用法详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
sklearn中fit、transform、fit_transform用法详解

1. 基本概念

这三个方法是 scikit-learn 转换器(Transformer)的核心方法:

fit() - 学习数据的参数(如均值、标准差等)

transform() - 应用学到的参数转换数据

fit_transform() - 一次性完成学习和转换

2. 详细解释

fit() - 训练/学习阶段

# 只学习参数,不转换数据scaler.fit(X_train)

计算并存储数据的统计信息(如均值、方差等)

不返回转换后的数据,只返回转换器对象本身

通常用于训练集

transform() - 转换阶段

# 使用已学习的参数转换数据X_train_scaled=scaler.transform(X_train)X_test_scaled=scaler.transform(X_test)# 对测试集用相同的参数

应用之前 fit() 学到的参数

返回转换后的数据

可用于训练集和测试集

fit_transform() - 训练+转换

# 一次性完成学习和转换X_train_scaled=scaler.fit_transform(X_train)

相当于先调用 fit() 再调用 transform()

只返回转换后的数据(不返回转换器)

仅用于训练集

3. 实际示例

示例1:标准化 (StandardScaler)

from sklearn.preprocessingimportStandardScalerimportnumpy as np# 创建数据X_train=np.array([[1,2],[3,4],[5,6]])X_test=np.array([[7,8],[9,10]])# 创建标准化器scaler=StandardScaler()# 正确用法scaler.fit(X_train)# 只在训练集上学习参数X_train_scaled=scaler.transform(X_train)X_test_scaled=scaler.transform(X_test)# 测试集用相同参数# 或者用快捷方式X_train_scaled=scaler.fit_transform(X_train)# 训练集X_test_scaled=scaler.transform(X_test)# 测试集print("训练集标准化后:")print(X_train_scaled)print("\n测试集标准化后:")print(X_test_scaled)

示例2:PCA降维

from sklearn.decompositionimportPCA# 创建PCA对象,保留2个主成分pca=PCA(n_components=2)# 在训练集上学习主成分X_train_pca=pca.fit_transform(X_train)# 相当于 fit() + transform()# 在测试集上应用相同的主成分X_test_pca=pca.transform(X_test)# 只用 transform()print(f"解释方差比例: {pca.explained_variance_ratio_}")

4. 重要注意事项

绝对不能这样用!

# ❌ 错误:测试集上调用 fit_transform()X_test_scaled=scaler.fit_transform(X_test)# 错误!# ❌ 错误:训练集只transform不fitX_train_scaled=scaler.transform(X_train)# 报错:没有先fit

为什么测试集只用 transform()?
保证训练集和测试集使用相同的转换规则

防止数据泄露(Data Leakage)

确保模型评估的准确性

5. 流程总结

# 训练阶段(训练集)X_train_transformed=transformer.fit_transform(X_train)# 测试/预测阶段(测试集/新数据)X_test_transformed=transformer.transform(X_test)# 如果有新数据需要预测new_data_transformed=transformer.transform(new_data)

记忆技巧
fit = 学习规则(只在训练集做一次)

transform = 应用规则(训练集、测试集都要做)

fit_transform = fit + transform(训练集的快捷方式)

记住这个原则:训练集可以了解数据,测试集只能应用从训练集学到的规则。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/10 11:02:20

PDF-Extract-Kit公式检测教程:定位数学公式的详细步骤

PDF-Extract-Kit公式检测教程:定位数学公式的详细步骤 1. 引言 在学术研究、论文撰写和教材数字化过程中,PDF文档中常常包含大量复杂的数学公式。传统手动录入方式效率低下且容易出错。PDF-Extract-Kit 是一款由“科哥”基于智能识别技术二次开发的PDF…

作者头像 李华
网站建设 2026/3/10 4:48:42

告别“黑箱”生产:不换PLC,实现设备状态透明化

在制造业数字化转型的浪潮中,一个普遍而棘手的难题横亘在许多传统工厂面前:车间里那些服役十几年甚至几十年的“老伙计”——各种品牌的PLC(可编程逻辑控制器),它们稳定可靠,是产线的“大脑”,却…

作者头像 李华
网站建设 2026/3/8 20:08:43

青龙面板:普通人也能玩转的自动化工具,全靠cpolar实现远程管理!

青龙面板的核心功能是自动执行 JavaScript、Python、Shell 等脚本,通过网页界面就能轻松设置定时任务,不用再手动重复操作。它特别适合程序员简化工作流程,也适合需要定期处理重复事务的普通用户 —— 比如自动备份文件、定时收集数据等。相比…

作者头像 李华
网站建设 2026/3/10 4:05:02

收藏!AI、ML、DL和NLP的区别与联系,一篇彻底搞懂

文章系统解析了人工智能(AI)、机器学习(ML)、深度学习(DL)和自然语言处理(NLP)的层级关系与区别。ML作为最广泛的概念,是从数据中学习模式的方法;DL是ML的子集,基于多层神经网络实现自动特征学习;NLP则是将ML/DL应用于语言任务的应…

作者头像 李华
网站建设 2026/3/10 18:14:11

RK3399E Android 11 将自己的库放到系统库方法

1.系统库的准备1.1 检查库检查需要放入系统的系统库libxxx.so是否非TLS 64, 在命令行中输入:/home/xxx/Android/Sdk/ndk/27.3.13750724/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-readelf -l libxxx.so | grep -A5 TLS命令行输出:TLS…

作者头像 李华
网站建设 2026/3/10 23:32:25

从零开始部署Image-to-Video:Python环境与GPU调优技巧

从零开始部署Image-to-Video:Python环境与GPU调优技巧 📖 引言:为什么需要本地化部署图像转视频系统? 随着AIGC技术的爆发式发展,图像生成视频(Image-to-Video) 已成为内容创作、影视特效和数…

作者头像 李华