我试图让我的数据正常化,对其进行一些工作然后再将其更改。在进行inverse_transform时,我必须始终传递与fit_transform时完全相同的形状吗?下面的代码将给我一个"不可广播的输出操作数,其形状(3,1)与广播形状(3,3)不匹配"
import numpy as np
from sklearn.preprocessing import MinMaxScaler
first = np.array([[ 1.2345, 1.220000,1.26245],
[ 1.234,1.220000,7.0901],
[ 1.23450,1.22000,1.14795]])
scaler = MinMaxScaler(feature_range=(0, 1))
dataset = scaler.fit_transform(first)
new_dataset = dataset[:,:1]
trainPredict2 = scaler.inverse_transform(new_dataset)
答案 0 :(得分:0)
您不必传递具有完全相同形状的数据集,但列数必须与原始数据集匹配,因为每行都被解释为记录,并且每列都被解释为要素。从技术上讲,您不能错过测试数据集的功能。因此,例如,切片行仍然有效:
new_dataset = dataset[:1,:]
trainPredict2 = scaler.inverse_transform(new_dataset)
这将返回原始数据集的第一行:
trainPredict2
# array([[ 1.2345 , 1.22 , 1.26245]])
如果您确实要反转一个或两个要素,可以通过反转最小 - 最大转换x′:=(x−xmin)/(xmax−xmin)
公式来计算:
scaler.data_range_[:1] * dataset[:,:1] + scaler.data_min_[:1]
# array([[ 1.2345],
# [ 1.234 ],
# [ 1.2345]])
这将返回原始数据集的第一列。