Рассмотрим следующий пример на python3, где мы используем MinMaxScaler из scikit-learn для нормализации диапазона чисел, а затем отменим их нормализацию до их исходных значений.
from pandas import Series
from sklearn.preprocessing import MinMaxScaler
data = [10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0]
series = Series(data)
values = series.values
values = values.reshape((len(values), 1))
scaler = MinMaxScaler(feature_range=(0,1))
scaler = scaler.fit(values)
normalized = scaler.transform(values)
inversed = scaler.inverse_transform(normalized)
Можно ожидать, что inversed
равно values
.Увы:
>>> inversed == values
array([[ True],
[ True],
[False],
[ True],
[ True],
[False],
[ True],
[ True],
[ True],
[ True]])
>>> print(values)
[[ 10.]
[ 20.]
[ 30.]
[ 40.]
[ 50.]
[ 60.]
[ 70.]
[ 80.]
[ 90.]
[100.]]
>>> print(inversed)
[[ 10.]
[ 20.]
[ 30.]
[ 40.]
[ 50.]
[ 60.]
[ 70.]
[ 80.]
[ 90.]
[100.]]
Что здесь происходит?Почему inversed[2]
и inversed[5]
не равны values[2]
и values[5]
?