Mak*_*iii 2 python statistics neural-network scikit-learn
我不是来自统计数据,但是通过机器学习和NN的一项工作,我看到缩放数据会产生很多伤害.根据我的经验,在列车测试之前缩放数据并不是一个好的选择,但请在列车测试分离后进行缩放时查看此示例.
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
Run Code Online (Sandbox Code Playgroud)
StandardScaler类将为每个数据集执行两个不同的缩放过程,并且可能损害您的NN结果的错误是:
在列车矩阵1中是-1.41421356,而在测试矩阵1中是0.现在想象你做一个带有训练权重测试数据的预测模型.对于1,您将收到完全不同的结果.怎么克服这个?
你不应该单独改造火车和测试.相反,您应该将缩放器放在训练数据上(然后使用缩放器对其进行转换),然后使用适合的缩放器转换测试数据.所以在你的代码中你应该这样做:
e =StandardScaler()
train_matrix = e.fit_transform(train_matrix)
test_matrix = e.transform(test_matrix)
Run Code Online (Sandbox Code Playgroud)
然后,当您打印转换后的训练和测试数据时,您将获得预期结果:
[[-1.41421356]
[-0.70710678]
[ 0. ]
[ 0.70710678]
[ 1.41421356]]
[[-1.41421356]]
Run Code Online (Sandbox Code Playgroud)