Как предсказать модель без обучения снова? - PullRequest
0 голосов
/ 06 июня 2019

Я развертываю приложение Flask на heroku для предсказания от ML Model. Как делать прогнозы без обучения снова для каждого прогноза?

Это хорошо работает на ноутбуке Jupyter, поскольку мне нужно просто изменить входные значения и выполнить эту конкретную ячейку для прогнозирования. Но когда весь код выполняется на Heroku или даже на VSC, он тренируется снова и снова.

file = ("file.csv")
names = ['index1','index2','index3','output']
.
.
X_train,X_validation,Y_train,Y_validation=model_selection.train_test_split(X,Y,test_size=validation_size,random_state=seed)
.
.
models.append(('KNN',KNeighborsClassifier()))
..
results=[]
names=[]
for name,model in models:
    kfold=model_selection.KFold(n_splits=10,random_state=seed)
    cv_results=model_selection.cross_val_score(model,X_train,Y_train,cv=kfold)
    results.append(cv_results)
    names.append(name)
    msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())
    print(msg)

knn=KNeighborsClassifier(n_neighbors=10)
knn.fit(X_train,Y_train)
predictions=knn.predict(X_validation)


//I need to make predicitions for the input below:
knn.predict(np.asmatrix([152,92,1,60,70]))

1 Ответ

1 голос
/ 06 июня 2019

Если вы выполните .fit, тогда оно, очевидно, снова будет тренироваться, и, кажется, вы делаете именно это.Если вы хотите развернуть уже обученный классификатор, вы должны сохранить его, чтобы он не потерял свои обученные веса.

Если вы хотите сохранить его, ваш обученный классификатор sklearn предлагает три варианта:

  • pickle : просто протравите обученный классификатор и восстановите его.

  • onnxmltools : ONNX - это общий инструмент обмена дляуже подготовленные классификаторы, которые можно загрузить для прогнозирования.

  • sklearn2pmml : та же история, что и с ONNX, только в другом формате PMML.

Честно говоря, я не знаю, какой вариант лучше, и я не проверял их, но вам следует выполнить тесты загрузки производительности, так как это приложение heroku, или даже считать постояннымглобальная переменная с вашим классификатором (не забывайте блокировать!).

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