sklearn当中fit_transform和transform方法的区别;数据标准化

为什么要标准化?如何标准化?

内容

fit_transformtransform 的区别

这两个方法都用于对数据进行转换,但它们的适用场景和作用略有不同。


1. fit_transform()

  • 作用:对数据执行拟合(fit)转换(transform)操作。
  • 用法:用于训练数据,计算均值标准差等统计量,并基于这些统计量对数据进行转换。

适用场景

  • 当你第一次对训练数据进行标准化或其他转换时使用,因为它会同时计算统计量并转换数据。

示例:

x_train_standardized = scaler.fit_transform(x_train)
  • 步骤
    1. 拟合:计算训练数据 x_train 的均值和标准差。
    2. 转换:使用计算出的均值和标准差,将 x_train 标准化。

2. transform()

  • 作用:对数据仅进行转换,不再重新计算统计量。
  • 用法:对测试数据或其他新数据进行转换时使用,必须基于训练数据的统计量(均值和标准差),以保持一致性。

适用场景

  • 对测试集或新数据进行转换时使用,以避免数据泄漏(不能用测试数据拟合统计量)。

示例:

x_test_standardized = scaler.transform(x_test)
  • 步骤
    1. 使用在 x_train 上拟合得到的均值和标准差,对 x_test 进行转换。
    2. 不会重新计算均值和标准差,确保训练数据和测试数据使用同样的转换标准。

主要区别总结:

方法 fit_transform() transform()
用途 计算统计量并转换数据 使用已有统计量转换数据
使用对象 训练数据 测试数据或新数据
是否计算统计量 (如均值、标准差) (使用已计算的统计量)

为什么需要区别这两个方法?

  1. 避免数据泄漏:测试数据不能用于拟合,否则模型会提前知道测试数据的信息,导致不公平的评估结果。
  2. 保持一致性:训练集和测试集必须用同样的统计量进行转换,确保模型能够正确评估和泛化。

完整代码示例:

from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split

# 创建示例数据
X = [[1, 2], [2, 3], [3, 4], [4, 5]]
y = [0, 1, 0, 1]

# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=42)

# 初始化标准化器
scaler = StandardScaler()

# 对训练数据拟合并转换
X_train_scaled = scaler.fit_transform(X_train)

# 对测试数据进行转换(使用训练数据的统计量)
X_test_scaled = scaler.transform(X_test)

print("X_train_scaled:", X_train_scaled)
print("X_test_scaled:", X_test_scaled)

总结

  • fit_transform:用于训练数据,计算统计量并转换数据。
  • transform:用于测试数据或新数据,只进行转换,确保与训练数据保持一致。

本文作者:Gold_stein

本文链接:https://www.cnblogs.com/smartljy/p/18520268

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Gold_stein  阅读(279)  评论(0编辑  收藏  举报
历史上的今天:
2023-11-01 1113. 红与黑
2023-11-01 1112.迷宫
2019-11-01 ACwing : 798. 差分矩阵
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑
  1. 1 逃离地面 RAD & 三浦透子
逃离地面 - RAD & 三浦透子
00:00 / 00:00
An audio error has occurred.

作词 : 野田洋次郎

作曲 : 野田洋次郎

空飛ぶ羽根と引き換えに 繋ぎ合う手を選んだ僕ら

それでも空に魅せられて 夢を重ねるのは罪か

夏は秋の背中を見て その顔を思い浮かべる

憧れなのか、恋なのか 叶わぬと知っていながら

重力が眠りにつく 1000年に一度の今日

太陽の死角に立ち 僕らこの星を出よう

彼が眼を覚ました時 連れ戻せない場所へ

「せーの」で大地を蹴って ここではない星へ

行こう

もう少しで運命の向こう もう少しで文明の向こう

もう少しで運命の向こう もう少しで

夢に僕らで帆を張って 来たるべき日のために夜を超え

いざ期待だけ満タンで あとはどうにかなるさと 肩を組んだ

怖くないわけない でも止まんない

ピンチの先回りしたって 僕らじゃしょうがない

僕らの恋が言う 声が言う

「行け」と言う