Единый прогноз с использованием модели, предварительно обученной с масштабированными функциями - PullRequest
1 голос
/ 30 июня 2019

Я обучил модель SVM scikit-learn с масштабированными функциями и сохранил ее для дальнейшего использования.В другом файле я загрузил сохраненную модель и хочу предоставить новый набор функций для выполнения прогноза.Нужно ли масштабировать этот новый набор функций?Как я могу сделать это только с одним набором функций?

Я не масштабирую новые значения и получаю странные результаты, и я не могу делать прогнозы.Несмотря на это, прогноз с большим набором тестов, сгенерированный StraifiedShuffleSplit, работает нормально, и я получаю 97% точности.

Проблема в единичных прогнозах с использованием постоянной модели SVM, обученной с масштабированными функциями.Какая-то идея, что я делаю не так?

1 Ответ

0 голосов
/ 02 июля 2019

Да, вы должны абсолютно одинаково масштабировать новые данные. Однако это может оказаться невозможным, если вы не сохранили ранее использованный скалер.

Вот почему вместо обучения и сохранения SVM вы должны тренироваться и сохранять скалер вместе с SVM. В жаргоне машинного обучения это называется конвейером.

Вот как вы могли бы использовать его на игрушечном примере:

from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_breast_cancer
from sklearn.pipeline import Pipeline
from sklearn.model_selection import train_test_split

data = load_breast_cancer()
X, y = data.data, data.target
X_train, X_test, y_train, y_test = train_test_split(X,y)

pipe = Pipeline([('scaler',StandardScaler()), ('svc', SVC())])

Этот конвейер затем поддерживает те же операции, что и обычная модель scikit-learn:

pipe.fit(X_train, y_train)
pipe.score(X_test, y_test)

При установке pipe он сначала масштабируется, а затем подает масштабированные объекты в классификатор.

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

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