Python 对MinMaxScaler中的多个功能使用相同的最小值和最大值数据

Python 对MinMaxScaler中的多个功能使用相同的最小值和最大值数据,python,scikit-learn,scaling,feature-scaling,Python,Scikit Learn,Scaling,Feature Scaling,我有一个包含5个特征的数据集。其中两个功能非常相似,但不具有相同的最小值和最大值 ... | feature 2 | feature 3 | ... -------------------------------- ..., 208.429993, 206.619995, ... ..., 207.779999, 205.050003, ... ..., 206.029999, 203.410004, ... ..., 204.429993, 202.600006, ... ..., 206.4

我有一个包含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, ...
功能3
始终小于
功能2
,缩放后保持这种状态很重要。但是,由于功能2和功能3没有完全相同的
min
max
值,在缩放后,默认情况下,它们都将以0和1作为最小值和最大值。这将删除值之间的关系。事实上,缩放后,第一个样本变成:

 ... | feature 2 | feature 3 | ...
--------------------------------
 ...,  0.00268,   0.00279, ...
这是我不想要的。我似乎找不到手动更改
MinMaxScaler
的最小值和最大值的方法。还有其他一些难看的方法,比如操纵数据,将feature2和Feature3合并为一个,然后再进行缩放和拆分。但我首先想知道是否有一种解决方案是由
sklearn
处理的,例如对多个功能使用相同的最小值和最大值


否则,最简单的解决方法就是使用一列拟合scaler,并将两者转换。正在尝试使用您发布的数据:

    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]

避免这种情况的唯一方法是单独缩放每一列


这是否是一个问题取决于您在缩放后想要对数据做什么

定标器有一个fit和一个transform方法,您可以单独调用它们。所以,可以在列1上进行拟合,然后变换列1和列2。这不会使列2中的某些值小于0吗?这是个问题吗?