gpt4 book ai didi

python - sklearn Standardscaler() 可以影响测试矩阵结果

转载 作者:行者123 更新时间:2023-11-28 20:15:49 24 4
gpt4 key购买 nike

我不是来自统计学,但是通过使用机器学习和神经网络进行一项工作,我发现缩放数据会产生很多危害。据我所知,在训练测试之前缩放数据并不是一个好的选择,但是请看一下这个在训练测试分离之后进行缩放的例子。

import numpy as np
from sklearn.preprocessing import StandardScaler


train_matrix = np.array([[1,2,3,4,5]]).T

test_matrix = np.array([[1]]).T


e =StandardScaler()
train_matrix = e.fit_transform(train_matrix)
test_matrix = e.fit_transform(test_matrix)

print(train_matrix)

print(test_matrix)

[out]:

[[-1.41421356] #train data
[-0.70710678]
[ 0. ]
[ 0.70710678]
[ 1.41421356]]


[[ 0.]] #test data

StandardScaler 类会对每个数据集执行两种不同的缩放过程,可能会损害您的 NN 结果的错误是:

在训练矩阵 1 中是 -1.41421356,而在测试矩阵 1 中是 0。现在假设您使用关于训练权重的测试数据建立了一个预测模型。对于 1,您会收到完全不同的结果。如何克服这个?

最佳答案

您不应该单独转换训练和测试。相反,您应该在训练数据上拟合缩放器(然后使用缩放器对其进行转换),然后使用拟合缩放器转换测试数据。所以在你的代码中你应该这样做:

e =StandardScaler()
train_matrix = e.fit_transform(train_matrix)
test_matrix = e.transform(test_matrix)

然后当您打印转换后的训练数据和测试数据时,您会得到预期的结果:

[[-1.41421356]
[-0.70710678]
[ 0. ]
[ 0.70710678]
[ 1.41421356]]


[[-1.41421356]]

关于python - sklearn Standardscaler() 可以影响测试矩阵结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45188319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com