【问题标题】:How to use MaxAbsScaler to standardize values ​between 1 and 100如何使用 MaxAbsScaler 标准化 1 到 100 之间的值
【发布时间】:2019-07-26 03:50:30
【问题描述】:

鉴于我在数据框中有如下数据:

import pandas as pd

value_1 = [1, 2, 3, 4, 5]
value_2 = [1000, 20000, 50000, 33000, 21000]
value_3 = [0, 1, 0, 1, 1]
value_4 = [4, 8, 12, 10, 19]
target  = [1, 22, 100, 77, 100]

name_of_columns = ['obs1', 'obs2', 'obs3', 'obs4', 'target']

data_final = pd.DataFrame(columns = name_of_columns)

data_final.obs1   = value_1
data_final.obs2   = value_2
data_final.obs3   = value_3
data_final.obs4   = value_4
data_final.target = target

enter image description here

目标列的范围从 1 到 100。因此,我想将其他列标准化为从 1 到 100。

如何使用 sklearn.preprocessing 做到这一点?已经识别了MaxAbsScaler模块但是不明白怎么输入参数,让值在1到100之间。

【问题讨论】:

  • 您希望每列独立缩放还是所有列一起缩放?
  • 所有栏目放在一起,但是,如果你知道,请同时发布

标签: python-3.x dataframe scikit-learn normalization sklearn-pandas


【解决方案1】:

您可能想改用MinMaxScaler。使用此缩放器,您可以指定每列的范围(在您的情况下为 [1,100])。所以这就是它的完成方式:

data = data_final[['obs1', 'obs2', 'obs3', 'obs4']]

from sklearn.preprocessing import MinMaxScaler
minmax = MinMaxScaler(feature_range = (1,100))
minmax.fit(data)
minmax.transform(data)

这将返回以下内容:

array([[  1.        ,   1.        ,   1.        ,   1.        ],
       [ 25.75      ,  39.3877551 , 100.        ,  27.4       ],
       [ 50.5       , 100.        ,   1.        ,  53.8       ],
       [ 75.25      ,  65.65306122, 100.        ,  40.6       ],
       [100.        ,  41.40816327, 100.        , 100.        ]])

如您所见,您的所有列现在都根据需要从 1 到 100 不等。

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 2014-08-16
    • 1970-01-01
    • 2018-12-12
    • 2018-07-19
    相关资源
    最近更新 更多