прогнозирование нового значения с помощью модели, обученной на одном горячих закодированных данных - PullRequest
1 голос
/ 14 мая 2019

Это может выглядеть как тривиальная проблема. Но я застреваю в прогнозировании результатов модели. Моя проблема такова:

У меня есть набор данных формы 1000 x 19 (кроме целевого объекта), но после одного горячего кодирования он становится 1000 x 141. Поскольку я натренировал модель на данных, которые имеют форму 1000 x 141, мне нужны данные формы 1 x 141 (как минимум) для прогнозирования. Я также знаю, в Python, я могу делать будущие прогнозы, используя

model.predict(data)

Но, поскольку я получаю данные от конечного пользователя через веб-портал размером 1 x 19. Теперь я очень озадачен тем, как мне продолжать делать прогнозы на основе пользовательских данных.

Как я могу преобразовать данные формы 1 x 19 в 1 x 141, поскольку я должен поддерживать один и тот же порядок в отношении данных поезда / теста, что означает, что порядок столбцов не должен отличаться? Любая помощь в этом направлении будет высоко оценена.

1 Ответ

2 голосов
/ 14 мая 2019

Я предполагаю, что для создания горячей кодировки вы используете sklearn onehotencoder. Если вы используете это, то проблема должна быть решена легко. Поскольку вы устанавливаете один горячий кодер на свои тренировочные данные

from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(categories = "auto", handle_unknown = "ignore")
X_train_encoded = encoder.fit_transform(X_train)

Итак, теперь в приведенном выше коде ваш кодировщик встроен в ваши тренировочные данные, поэтому, когда вы получаете тестовые данные, вы можете преобразовать их в те же кодированные данные с помощью этого встроенного кодировщика.

test_data = encoder.transform(test_data)

Теперь ваши тестовые данные также будут иметь форму 1x141. Вы можете проверить форму, используя

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