MinMaxScaler
применяется к каждому столбцу следующее преобразование:
- Минимум столбца вычитания;
- Деление на диапазон столбца (т. Е.
column max - column min
).
Обратное преобразование применяет операцию «обратный» в «обратном» порядке:
- Умножение на диапазон столбцов перед преобразованием;
- Добавление минимального столбца.
Поэтому для столбца A
выполняется
(df['A'] - df['A'].min())/(df['A'].max() - df['A'].min())
, в частности, в скейлере хранятся значения min 0.5
и диапазон 1.5
Когда вы применяете inverse_transform
to [8, 11, 5]
это становится:
[8*1.5 + 0.5, 11*1.5 + 0.5, 5*1.5 + 0.5]=[12.5, 18, 8]
Теперь это не , как правило, предлагается для любого машинного обучения, однако для преобразования диапазонов нового столбца в предыдущий , вы можете сделать что-то вроде следующего:
data = pd.DataFrame(np.array([[2,3],[1.02,1.2],[0.5,0.3]]),columns=cols)
# Create a Scaler for the initial data
scaler_data = MinMaxScaler()
# Fit the scaler with these data, but there is no need to transform them.
scaler_data.fit(data)
#Create new data
new_data = pd.DataFrame(np.array([[8,20],[11,2],[5,3]]),columns=cols)
# Create a Scaler for the new data
scaler_new_data = MinMaxScaler()
# Trasform new data in the [0-1] range
scaled_new_data = scaler_new_data.fit_transform(new_data)
# Inverse transform new data from [0-1] to [min, max] of data
inver_new_data = scaler_data.inverse_transform(scaled_new_data)
Например, это всегда будет сопоставлять минимальное и максимальное значения новых столбцов данных с минимальным и максимальным значениями столбцов начальных данных соответственно.