2018年3月6日 星期二

sklearn.preprocessing.MinMaxScaler 使用


sklearn.preprocessing.MinMaxScaler





直的一組
std = (每數- 最小) / (最大- 最小)
scale = std * (最大-最小) + 最小

fit 完 可讀取的陣列資料

Attribute:
min_ data_min_/data_range_
scale_ (feature_range_max-feature_range_min)/(max-min)
data_min_ 資料最小值
data_max_ 資料最大值
data_range_ 資料最大值-資料最小值
 

 code:

 import pandas as pd
import numpy as np

from sklearn.preprocessing import MinMaxScaler


data = [[1,2,3]
,[9,5,4]
,[7,6,8]
,[12,8,9]]

# 直的一組
# min_ data_min_/data_range_
# scale_ (feature_range_max-feature_range_min)/(max-min)
# data_min_ 資料最小值
# data_max_ 資料最大值
# data_range_ 資料最大值-資料最小值

# X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
# X_scaled = X_std * (max - min) + min


minmaxscaler = MinMaxScaler(feature_range=(0, 1))

minmaxscaler.fit(data)

print("MinMaxScaler min_: \n", minmaxscaler.min_)
print("MinMaxScaler scale_: \n", minmaxscaler.scale_)
print("MinMaxScaler data_min_: \n", minmaxscaler.data_min_)
print("MinMaxScaler data_max_: \n", minmaxscaler.data_max_)
print("MinMaxScaler data_range_: \n", minmaxscaler.data_range_)

print("MinMaxScaler: \n",minmaxscaler.fit_transform(data))
output:

MinMaxScaler min_:
[-0.09090909 -0.33333333 -0.5 ]
MinMaxScaler scale_:
[0.09090909 0.16666667 0.16666667]
MinMaxScaler data_min_:
[1. 2. 3.]
MinMaxScaler data_max_:
[12. 8. 9.]
MinMaxScaler data_range_:
[11. 6. 6.]
MinMaxScaler:
[[0. 0. 0. ]
[0.72727273 0.5 0.16666667]
[0.54545455 0.66666667 0.83333333]
[1. 1. 1. ]]

以第一行的 7 為例

 (7-1) / (12-1) = 0.545454

source code

沒有留言:

張貼留言