簡體   English   中英

如何通過模型進行預測而無需再次訓練?

[英]How to predict from model without training again?

我正在heroku上部署Flask應用程序,以根據ML模型進行預測。 如何進行預測,而無需為每個預測再次訓練?

它在Jupyter Notebook上效果很好,因為我只需要更改輸入值並執行該特定單元格即可進行預測。 但是,當整個代碼在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]))

如果執行.fit那么顯然它將再次訓練,看來您確實做到了。 如果要部署已經訓練有素的分類器,則必須保存它,因此它不會失去訓練有素的權重。

如果您想堅持下去,訓練有素的分類器sklearn會建議三個選項:

  • pickle :只腌制訓練有素的分類器並恢復它。

  • onnxmltools :ONNX是已訓練有素的分類器的常用交換工具,您可以加載這些分類器以進行預測。

  • sklearn2pmml :與ONNX相同的故事,只是格式不同的PMML。

老實說,我不知道哪個是最好的選擇,我也沒有對其進行測試,但是您應該加載性能測試,因為它是一個heroku應用程序,或者甚至考慮使用您的分類器作為持久性全局變量(不要忘記鎖定! )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM