我在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)
但我不认为这是问题所在。
答案 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())
这是你想要的吗?