【发布时间】:2019-04-07 05:05:26
【问题描述】:
我想在 [0,1] 范围内标准化我的数据。我应该在洗牌和拆分后对数据进行归一化吗?我应该重复相同的程序进行测试测试吗?我遇到了一个使用这种规范化的python代码。这是用目标范围 [0,1] 规范化数据的正确方法吗
`X_train = np.array([[ 1., -1., 2.], [ 2., 0., 0.],[ 0., 1., -1.]])
a= X_train
for i in range(3):
old_range = np.amax(a[:,i]) - np.amin(a[:,i])
new_range = 1 - 0
f = ((a[:,i] - np.amin(a[:,i])) / old_range)*new_range + 0
lis.append(f)
b = np.transpose(np.array(lis))
print(b)`
这是我标准化后的结果。
`[[0.5, 0., 1.]
[1., 0.5, 0.33333333]
[0., 1., 0.]]`
【问题讨论】:
-
是的,您必须对测试集执行相同的操作。从上面的结果来看,该算法运行良好。但是,您可以使用
scikit-learn包进行数据处理 s.t.你不会从头开始编写代码。 -
那么现在我将从测试集的每一列中选择最小值和最大值吗?还是应该使用我在训练集中使用的相同的最小值和最大值(每列)?
-
我还想确定是否应该在对数据进行洗牌后执行此规范化?还是在分别为每个班级改组之前?