在MinMaxScaler中为多个功能使用相同的最小和最大数据

问题描述 投票:0回答:1

我有5个特征的数据集。其中两个功能非常相似,但是最小值和最大值不同。

... | feature 2 | feature 3 | ...
--------------------------------
..., 208.429993, 206.619995, ...
..., 207.779999, 205.050003, ...
..., 206.029999, 203.410004, ...
..., 204.429993, 202.600006, ...
..., 206.429993, 204.25, ...

feature 3始终小于feature 2,重要的是在缩放后保持这种状态。但是,由于特征2和特征3的minmax值不完全相同,因此在缩放后,它们的默认最小值和最大值均为0和1。这将删除值之间的关系。实际上,缩放后,第一个样本变为:

 ... | feature 2 | feature 3 | ...
--------------------------------
 ...,  0.00268,   0.00279, ...

这是我不想要的东西。我似乎找不到手动更改MinMaxScaler的最小值和最大值的方法。还有其他丑陋的技巧,例如处理数据并将feature2和feature3合并为一个,以便进行缩放和随后再次拆分。但是我想先知道是否有sklearn处理的解决方案,例如对多个功能使用相同的最小值和最大值。

否则,将采用最简单的解决方法。

python scikit-learn scaling feature-scaling
1个回答
0
投票

使用一列安装缩放器并同时进行转换。尝试使用您发布的数据:

    feature_1   feature_2
0   208.429993  206.619995
1   207.779999  205.050003
2   206.029999  203.410004
3   204.429993  202.600006

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(df['feature_2'].values.reshape(-1,1))

scaler.transform(df)

array([[1.45024949, 1.        ],
       [1.288559  , 0.60945366],
       [0.85323442, 0.20149259],
       [0.45522189, 0.        ]])

如果缩放的数据超出了用于调整比例器的范围,则缩放的数据将不在[0,1]范围内。

避免这种情况的唯一方法是分别缩放每列。

是否存在问题取决于缩放后要对数据执行的操作。

© www.soinside.com 2019 - 2024. All rights reserved.