规范化训练数据,使其平均值为0,范围在-0.5和0.5之间

时间:2016-11-20 18:02:39

标签: python training-data

尝试将输入数据标准化为平均值为0且在python中的范围为-0.5和0.5

def normalise(image):
    return 0.1 + (((image_data-0)*(0.9-0.1))/(255 - 0))

尝试使用min-max缩放,但是错误的答案我接近0.1的min和max

3 个答案:

答案 0 :(得分:2)

您想要做的是“规范化”的特殊情况。 规范化会将您的数据fram -1缩放为1.然后您可以将所有项目除以2。 您希望将变量从-0.5扩展到0.5。 然后你可以做的是:

from sklearn.preprocessing import normalize
c = normalize(yourData)/2

例如,normalize([1,2,3,5, -5, 0,6])/2会给出:

[[ 0.3   0.   -0.25  0.25  0.15  0.1   0.05]]

答案 1 :(得分:1)

你想要缩放。这是一个例子:

from sklearn import preprocessing
import numpy as np

data = np.array([70, -5, 5, 3, 2, 1])
scale = preprocessing.minmax_scale(data, feature_range=(-0.5, 0.5))
print scale

出:

[ 0.5        -0.5        -0.36666667 -0.39333333 -0.40666667 -0.42      ]

答案 2 :(得分:1)

谢天谢地,你的答案都是正确的并引导我到了正确的地方,但我不得不处理第一栏,所以这对我来说效果最好

def normalize(X):
max=0.5
min=-0.5
X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
X_scaled = X_std * (max - min) + min
return X_scaled

虽然平均值不完全是,但断言代码为round(),所以它变为零