当前位置: 首页 > news >正文

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(训练集的快捷方式)

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

http://www.jsqmd.com/news/221236/

相关文章:

  • 报名开启|G-Star Gathering Day 广州站
  • FPGA 通过 SPI 模式读写 SD 卡:实现与移植探索
  • 摄像头相关记录
  • G-Star 精选开源项目推荐|第四期
  • Halcon 定位加二位测量找直线
  • Thinkphp-Laravel微信小程序的社区后勤报修系统
  • ThingsBoard - APP图片更改为彩色(失败)
  • 正交电感的频率特性测量
  • 用Nginx日志风格复刻《黑客帝国》代码雨:终端里的赛博朋克特效
  • Thinkphp-Laravel微信小程序积分商城购物系跑腿配送系统_09ok4
  • 网安校招不踩坑!3 类岗位薪资拆解(10-50 万)+ 技能要求,应届生精准匹配指南
  • MR2A08A-4Mb 8位I/O并行接口MRAM
  • 部署CA证书
  • Thinkphp-Laravel电子设备商品商城采购系统的研究与设计
  • 【收藏】1536维vs512维:低维嵌入模型如何实现RAG性能翻倍?颠覆认知的技术选型实践
  • 从脚本小子到高手!黑客自学 5 本必读书,覆盖基础 / 实战 / 社会工程,附电子书
  • 空心正交电感两路线圈信号极值偏移方向
  • 2026企业AI Agent规模化落地:四大核心趋势详解,收藏这份从0到1的实战指南
  • 网安工程师狂喜!8 款必备黑客工具 + 安装包,一次全分享,收藏即封神!
  • 收藏!AI、ML、DL和NLP的区别与联系,一篇彻底搞懂
  • 动态加载库:dlopen详解-deepseek
  • 安川代码移植:基于瑞萨芯片且无PCB的主板原理图探索
  • 收藏必看!RAG与CAG全面对比:如何选择最适合你的LLM知识整合方案
  • 跑步即工程:精确掌控你的身体
  • 【例4-2】牛的旅行(信息学奥赛一本通- P1343)
  • RK3399E Android 11 将自己的库放到系统库方法
  • 面向自然科学领域机器学习与深度学习(高维数据预处理—可解释ML/DL—时空建模—不确定性量化-全程AI+Python)
  • 网络安全IT产业就业与发展前景---个人观点分析分享,专业才能端好饭碗
  • AI水遥感---水体提取、水深反演、水温监测、水质参数AI反演,流水系,河道宽度提取等
  • 用Sambert-HifiGan为电子相册添加情感化语音描述