MinMaxScaler 调用在相同数据集间结果不同
我用sklearn里的MinMaxScaler对我的数据集进行了缩放,代码是这样的:
from sklearn.preprocessing import MinMaxScaler
# create a StandardScaler object
self.scaler = MinMaxScaler(feature_range=(0, 1))
# fit the scaler to the dataset
self.scaler.fit(self.X_org)
# transform dataset using the scaler
self.X_scalled = pd.DataFrame(self.scaler.transform(self.X_org), columns=self.X_org.columns)
return self.X_scalled
不过,现在我正在用整个数据集的最后10%来做验证,同时也用训练数据集的缩放器对这些数据进行了缩放,代码是这样的:
X_input_val_data_scalled = pd.DataFrame(self.scaler.transform(X_input_val_data), columns=X_input_val_data.columns)
现在我遇到的问题是:
在训练的X_org数据集中,我得到了一个很好的缩放结果,数据范围在0到1之间。而在缩放后的验证X数据集中,我得到的数据却完全不正常,范围在7.5到8之间...
我哪里做错了呢?
1 个回答
0
其实,这就是最小-最大缩放器应该工作的方式,它的缩放过程如下:
data - min(x) / (max(x) - min(x))
这里的x是最小-最大缩放器用来训练的数据。如果数据属于x,那么数据减去最小值min(x)的结果是一个正数,并且这个数会小于最大值max(x)减去最小值min(x)的结果,因此这个比例会在0到1之间。但是,如果数据不属于x,比如你的验证数据,那么这个比例就不一定在0到1之间了。