Вы можете использовать тот же объект MinMaxScaler()
, который вы использовали во время обучения, чтобы преобразовать свой единственный экземпляр. Вот пример.
# training data
X_train = np.array([[1, 2], [3, 4], [5, 6]])
y_train = np.array([1, 0])
# scaler
scaler = MinMaxScaler().fit(X_train)
Масштабирование X_train
:
X_train_scaled = scaler.transform(X_train)
Обучение модели с использованием X_train_scaled и y_train ...
Прогнозирование нового пример np.array([7, 8])
:
new_sample = np.array([7, 8]).reshape(1, -1) # because the scaler expects a 2D array
scaler.transform(new_sample) # pass this to model.predict()
Редактировать:
Как работает нормализация Макс-Макс:
Следующее преобразование применяется к каждая функция (ссылка на Википедию) :
![enter image description here](https://i.stack.imgur.com/q4fcs.png)
Мы применим это к X_train
X_train = np.array([[1, 2], [3, 4], [5, 6]])
array([[1, 2],
[3, 4],
[5, 6]])
# min, max of each feature
mn = np.min(X_train, axis=0) # array([1, 2])
mx = np.max(X_train, axis=0) # array([5, 6])
Вычисление масштабированной версии:
(X_train - mn) / (mx - mn)
array([[0. , 0. ],
[0.5, 0.5],
[1. , 1. ]])
Вышеуказанное соответствует результату:
scaler = MinMaxScaler().fit(X_train)
X_train_scaled = scaler.transform(X_train)
array([[0. , 0. ],
[0.5, 0.5],
[1. , 1. ]])
Когда вы вводите новый входной вектор, то же преобразование должно применяться с использованием приведенного выше mn
и mx
значения
new_smaple = np.array([7, 8]).reshape(1, -1)
(new_sample - mn) / (mx - mn)
array([[1.5, 1.5]])
Это соответствует выводу scaler.transform(new_sample)
Также вы можете извлечь min, max из встроенного объекта MinMaxScaler, используя scaler.data_min_
и scaler.data_max_
который будет соответствовать вышеуказанным mn
и mx
.