首页 > 解决方案 > Sklearn MinMax 变换不起作用,不会带来相等的数字

问题描述

我对 MinMax Scaler 有疑问。我想将它用于 LIBSVM 格式的图像数据。但是,在我将它带入格式之前,我想缩放由 -1 到 1 范围内的图像数组组成的 Numpy 数组。最大值为 255,最小值为 0,来自颜色。

现在我已经将它安装到训练集上。这里已经很明显了,缩放值至少高于 1 和低于 -1(可能是小数点后 10 位)。但在测试集中情况要糟糕得多。在这里,255 突然归一化为 1.234 ... 并且 2 归一化为 -1.175 ...

这可能是什么原因?这里有人可以帮助我吗?

(可能是因为测试集的最小值是 2 而不是 0?如果是这样,我该如何解决这个问题?)

非常感谢!

scaler = MinMaxScaler(feature_range=(-1,1))

X_scaled = scaler.fit_transform(X)
X_t_scaled = scaler.transform(X_t)

print("TRAIN")
print(np.max(X))
# 
print(np.max(X_scaled))
print(np.mean(X_scaled))
print(np.min(X))
print(np.min(X_scaled))


print("TEST")
print(np.max(X_t))
print(np.max(X_t_scaled))
print(np.mean(X_t_scaled))
print(np.min(X_t))
print(np.min(X_t_scaled))

这是输出:

255 1.00000000000000004 0.0012813871623244555 0 -1.0000000000000002 255 1.2346938775510201 0.0028408630191349544 2 -11.12754385964

标签: pythonimagenumpyscikit-learnscale

解决方案


推荐阅读