【Python】【matplotlib】円グラフを作成する
MAX
MAX999blog
通常、スケーリング(正規化)は[0, 1]の範囲で行うが、時にはスケーリング後の範囲を変更したい場合もある(かもしれない)
sklearnのMinMaxScalerを使用すれば、引数を変えるだけで計算できるが、sklearnを使うまでもない場合もある。
自分で計算したい時用。
1# xi: i番目の値
2# x_max: xの最大値
3# x_min: xの最小値
4# x_norm: 正規化されたxの値
5
6x_norm = ( xi - x_min ) / ( x_max - x_min)
一番の基本形。
これで[0, 1]の範囲に収まる。
1# xi: i番目の値
2# x_max: xの最大値
3# x_min: xの最小値
4# sc_max: 正規化したい範囲の右端
5# sc_min: 正規化したい範囲の左端
6# x_norm: 正規化されたxの値
7x_norm = (xi - x_min) / (x_max - x_min) * (sc_max - sc_min) + sc_min
例えばsc_maxに-3, sc_minに3を設定すると[-3, 3]でスケーリングされる。
この計算を行ってくれるのが、sklearnのMinMaxScaler。
1from skleran.preprocessing import MinMaxScaler
2data = [ 1, 2, 3, 4, 5]
3arr = np.array(data).reshape(-1,1)
4
5# [0, 1]でスケーリングする場合(デフォルト)
6scaler = MinMaxScaler()
7scaler.fit(arr)
8data_scaled = scaler.transform(arr)
9
10# 範囲指定してスケーリングする場合
11sc_min = -1
12sc_max = 1
13scaler = MinMaxScaler( (sc_min, sc_max) )
14scaler.fit(arr)
15data_scaled = scaler.transform(arr)
16
sc_min, sc_maxを指定する場合はタプルで指定することに注意。
計算式としては、手動で実装したのと全く同じことを行うことになる。
データフレームに対して一括でスケーリングするなら、通常はsklearnのMinMaxScalerを使えば良いが、1行ずつ範囲を変えたい場合などは、手動で実装することになる。