Как я могу предсказать одну выборку данных, используя минимальное максимальное масштабирование, когда я тренирую модель с минимальными максимальными масштабированными данными? - PullRequest
0 голосов
/ 19 февраля 2020

Как объяснено в аналогичный вопрос , можно легко проверить данные, когда у вас есть набор образцов. Если пользователь должен предсказать цель одного образца, то как действовать. Пожалуйста помоги.

Спасибо.

1 Ответ

0 голосов
/ 19 февраля 2020

Вы можете использовать тот же объект 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

Мы применим это к 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...