在Keras中标准化numpy数组

时间:2017-05-22 08:05:34

标签: python numpy keras standardized

我在Keras训练模型后,是时候进行预测了,所以我使用了一些数据来检查我的模型。但是,训练后的模型在训练前是标准化的(非常不同的值范围)。

因此,为了预测一些数据,我也应该将其标准化:

packet = numpy.array([[3232235781, 3232235779, 6, 128, 2, 1, 0, 524288, 56783, 502, 0, 0x00000010, 0, 0, 61, 0, 0, 0]])
scaler = StandardScaler().fit(packet)
rescaled_packet = scaler.transform(packet)
print(rescaled_packet) 

输出始终为0:[[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]

有没有人知道如何标准化numpy数组?

请注意,出现警告错误DataConversionWarning: Data with input dtype int64 was converted to float64 by StandardScaler. warnings.warn(msg, _DataConversionWarning)但我不认为这是问题所在。

2 个答案:

答案 0 :(得分:1)

这实际上来自于您的数据集中只有一个示例。当您使用一个示例在表上调用fit时 - 计算每列的平均值 - 但是如果每列中只有一个数字 - 此mean等于第一个(仅限)行。这就是为什么你要获得0的矢量

的原因。

答案 1 :(得分:0)

import numpy as np

a = np.array([10,1,-4,35,26])
a_stand = (a - a.mean()*np.ones(len(a)))/(a.std())

这是你想要的吗?