我想在 numpy 而不是 sklearn 中實作 min-max 縮放器的逆。應用最小最大比例很容易
v_min, v_max = v.min(), v.max()
new_min, new_max = 0, 1
v_p = (v - v_min)/(v_max - v_min)*(new_max - new_min) new_min
v_p.min(), v_p.max()
但是一旦我得到了縮放值,我怎么能回到 numpy 中的原始值
uj5u.com熱心網友回復:
試試數學:
import numpy as np
org_arr = np.array([
[2.0, 3.0],
[2.5, 1.5],
[0.5, 3.5]
])
# save min & max
min_val = org_arr.min(axis = 0)
max_val = org_arr.max(axis = 0)
scl_arr = (org_arr - min_val) / (max_val - min_val)
print(scl_arr)
# inverse of min-max scaler in numpy
org_arr_2 = scl_arr*(max_val - min_val) min_val
print(org_arr_2)
輸出:
# scl_arr
[[0.75 0.75]
[1. 0. ]
[0. 1. ]]
# org_arr_2
[[2. 3. ]
[2.5 1.5]
[0.5 3.5]]
檢查sklearn.preprocessing.MinMaxScale
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scl_arr = scaler.fit_transform(org_arr)
print(scl_arr)
org_arr_2 = scaler.inverse_transform(scl_arr)
print(org_arr_2)
輸出:
# scl_arr
[[0.75 0.75]
[1. 0. ]
[0. 1. ]]
# org_arr_2
[[2. 3. ]
[2.5 1.5]
[0.5 3.5]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/505104.html
上一篇:在Python中附加兩個陣列
