MinMaxScaler 调用在相同数据集间结果不同

0 投票
1 回答
23 浏览
提问于 2025-04-12 16:33

我用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之间了。

撰写回答