关于python中正态化数据和分离数据集的先后顺序问题

python机器学习过程中需要将一些数据正态化,那么是先分离数据集,然后将再将数据集正态化呢,还是反过来执行呢?
参考网上别的作者,有如下解释(文章选择链接如下):

https://blog.csdn.net/u012328159/article/details/84669266

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

# 正确方法  --->>> 先分离,再转换
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25, random_state=7)
ss = StandardScaler()
x_train = ss.fit_transform(x_train)
x_test = ss.transform(x_test)

# 错误方法 --->>>  先转换, 再分离
ss = StandardScaler()
x = ss.fit_transform(x)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25, random_state=7)

第一种先划分再在训练集上使用fit_transform,然后在对测试集用transform是正确的。但第二种方法先对所有样本标准化再划分则是错误的。举个例子说明这个问题:假设我们的样本中有异常值,而这些异常值被划分到了测试集中,那么第一种方法,异常值对均值和方差没有任何影响。而第二种方法要先计算所有样本的均值和方差,则异常值产生了影响。第二种方法会造成类似过拟合的现象,在测试集上准确率也显得很高,但是如果换做其他测试样本,那么泛化性能将差的多。

本选选自网上一位博主,虽然现在看得还是不太懂,不过还是谢谢有人做出了解释。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值