Python 对MinMaxScaler中的多个功能使用相同的最小值和最大值数据
我有一个包含5个特征的数据集。其中两个功能非常相似,但不具有相同的最小值和最大值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
... | 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吗?这是个问题吗?