0-150归一化到0-100
MinMaxScaler
缺点:
新数据加入时可能会 改变数据的min或max值
实现1:
from sklearn.preprocessing import MinMaxScaler
data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
#实例化
scaler = MinMaxScaler() #如果()内为空,MinMaxScaler会把原数据归一化到默认值:[o,1]范围内
scaler.fit(data) #生成了min&max
result = scaler.transform(data) #通过transform接口导出归一化结果
result
array([[0. , 0. ], [0.25, 0.25], [0.5 , 0.5 ], [1. , 1. ]])
解析:
通过下面的代码可见data:
data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
import pandas as pd
pd.DataFrame(data)
再看array的运行结果,可见:
data中0、1两列提供的信息量是一样的。
其实倒数第三、第二行的代码可以合起来写成
result = scaler.fit_transform(data)
其运行结果是一样的
与之对应的可以将运行结果逆转回原数据
scaler.inverse_transform(result)
array([[-1. , 2. ], [-0.5, 6. ], [ 0. , 10. ], [ 1. , 18. ]])
实现2
from sklearn.preprocessing import MinMaxScaler
data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
#实例化
scaler = MinMaxScaler(feature_range = [5, 10]) #把原数据归一化到:[5,10]范围内
scaler.fit(data) #生成了min&max
result = scaler.transform(data) #通过transform接口导出归一化结果
result
array([[ 5. , 5. ], [ 6.25, 6.25], [ 7.5 , 7.5 ], [10. , 10. ]])