标准化时fit_transform与transform的区别

1. fit_transform(X)
功能:同时完成「拟合」和「转换」两个操作
过程:

先根据输入数据 X 计算出均值(mean)和标准差(std)
再使用这些计算出的均值和标准差对数据 X进行标准化处理(将数据转换为均值为 0、标准差为 1 的分布)
适用场景:对训练数据进行标准化时使用

2. transform(X)
功能:仅进行「转换」操作
过程:

使用之前通过 fit 或 fit_transform 计算好的均值和标准差,对新数据 X 进行标准化
不会重新计算均值和标准差再标准化
适用场景:对测试数据或新数据进行标准化时使用

关键区别与注意事项
fit_transform 是 fit + transform 的组合,会改变缩放器内部的状态(存储计算出的均值和标准差)
transform 必须在 fit 或 fit_transform 之后使用,否则会报错
核心原则:用训练数据的统计量(均值、标准差)来标准化测试数据,保证数据处理的一致性,保持一致性,确保模型能够正确评估和泛化。
代码示例

# -*- coding: utf-8 -*-
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

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

# 划分数据集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.5, random_state=123)
print(‘x_train:’, x_train)

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

# 对训练数据拟合并转换
x_train_scaled = scaler.fit_transform(x_train)
np.set_printoptions(precision=2, suppress=True)
print(“\n train每列统计量:”)
print(f”均值: {scaler.mean_}”)
print(f”标准差: {np.sqrt(scaler.var_)}”)
print(“x_train_scaled:”, x_train_scaled)

# 对测试数据进行转换(使用训练数据的统计量)
x_test_scaled = scaler.transform(x_test)
print(‘x_test:’, x_test)
print(“\n test复用train均值和标准差后每列统计量:”)
print(“x_test_scaled:”, x_test_scaled)

# 对测试数据拟合并转换
x_test_scaled_2 = scaler.fit_transform(x_test)
print(“\n test重新计算均值和标准差后每列统计量:”)
print(f”均值: {scaler.mean_}”)
print(f”标准差: {np.sqrt(scaler.var_)}”)
print(“x_test_scaled_2:”, x_test_scaled_2)

标准化时fit_transform与transform的区别插图

欢迎使用66资源网
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!

66源码网 » 标准化时fit_transform与transform的区别

提供最优质的资源集合

立即查看 了解详情