训练集和测试集的标准化中的坑!!!

问题:数据标准化,应该在训练集和测试集划分前还是后?

答:数据标准化,应该在训练集和测试集划分,分别对训练集和测试集进行数据标准化处理。不应该是数据标准化后,再进行划分。虽然从模型测试的结果看,可能出现的差距不大。

解释:当你手头已经有一份训练和测试数据。在真正的部署过程中,测试数据实际上就是那些源源不断刚刚出现的数据,你不知道它什么分布,也不知道它出现什么样的数值。所以你要用训练数据得到的均值和标准偏差,去转换它。这更加贴近部署的实际。测试集的归一化的均值和标准偏差应该来源于训练集

代码:

from sklearn import preprocessing
Standard = preprocessing.StandardScaler()
x_train = Standard.fit_transform(x_train)
x_test = Standard.transform(x_test)
注意事项:

1.必须现在train上使用fit_transform,再在test数据集上使用transform

2.    x_train = preprocessing.StandardScaler().fit_transform(x_train)
       x_test = preprocessing.StandardScaler().transform(x_test)

        会报错:

This StandardScaler instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.

解决办法:需要Standard = preprocessing.StandardScaler(),定义一个对象后,再进行标准化处理。

在机器学习和深度学习,数据标准化是一个重要的预处理步骤,它有助于提高模型的性能和稳定性。数据标准化的目的是将不同特征的取值范围统一,使其具有相似的尺度。训练集测试集和验证集在数据标准化上的处理方式是一样的。 数据标准化通常有两种常见的方法:Z-score标准化和MinMax标准化。 1. Z-score标准化(也称为零均值标准化):对于每个特征,计算其平均值(μ)和标准差(σ),然后对每个样本的特征值进行如下计算: ``` x' = (x - μ) / σ ``` 其,x'是标准化后的特征值,x是原始特征值。 2. MinMax标准化:对于每个特征,计算其最小值(min)和最大值(max),然后对每个样本的特征值进行如下计算: ``` x' = (x - min) / (max - min) ``` 其,x'是标准化后的特征值,x是原始特征值。 这两种方法都可以将特征值映射到0到1之间的范围,但Z-score标准化更适用于对数据分布有要求的算法,而MinMax标准化更适用于对数据范围有要求的算法。 在进行数据标准化时,需要注意以下几点: - 标准化操作应该在训练集上进行,并将得到的均值和标准差(或最小值和最大值)应用于测试集和验证集。 - 如果使用Z-score标准化,确保计算均值和标准差时只使用训练集的数据。 - 如果使用MinMax标准化,确保计算最小值和最大值时只使用训练集的数据。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值