如何使用 MaxAbsScaler 标准化 1 到 100 之间的值
How to use MaxAbsScaler to standardize values between 1 and 100
鉴于我在数据框中有如下数据:
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之间。
您可能想改用 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)
这将 return 以下内容:
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 之间,如您所愿。
鉴于我在数据框中有如下数据:
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之间。
您可能想改用 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)
这将 return 以下内容:
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 之间,如您所愿。