невозможно загрузить модель в Flask с помощью scikit-learn - PullRequest
0 голосов
/ 06 декабря 2018

Создала модель случайного леса и пыталась развернуть ее как API, используя Flask python3.7 на ubuntu 18.

import re
import numpy as np
import pandas as pd
import sklearn
from sklearn import tree
from sklearn.tree import DecisionTreeClassifier
from sklearn.externals import joblib
from sklearn import svm
from flask import Flask, request, jsonify, make_response, redirect, Response
import pickle
import json


app = Flask(__name__)

model = 'model.joblib'

@app.route("/score", methods=['GET'])
def linkscoring():
    '''
    some Logic
    '''

    analysis_dataset = analysis_dataset.fillna(0)
    link_score = analysis_dataset.sum(axis=1)

    link_score   = loaded_model.predict_proba(analysis_dataset)
    prob_info_present = round(100*(link_score[0][1]),2)
    return jsonify({"message":prob_info_present})


if __name__ == "__main__":
    loaded_model = joblib.load(model)
    app.run()

Но в локальной системе я получаю эту ошибку NameError: name 'loaded_model' is not defined

Я также пытался загрузить модель внутри функции.но не сработало.Единственная цель - загрузить модель.Я не знаю, что я делаю неправильно.Любая помощь будет аперифицирована.

1 Ответ

0 голосов
/ 28 марта 2019

Похоже, ваша переменная модели не установлена ​​в глобальное значение.Попробуйте это здесь:

import re
import numpy as np
import pandas as pd
import sklearn
from sklearn import tree
from sklearn.tree import DecisionTreeClassifier
from sklearn.externals import joblib
from sklearn import svm
from flask import Flask, request, jsonify, make_response, redirect, Response
import pickle
import json


app = Flask(__name__)

def init():
    global model
    model = joblib.load("model.h5")

@app.route("/score", methods=['GET'])
def linkscoring():
    '''
    some Logic
    '''

    analysis_dataset = analysis_dataset.fillna(0)
    link_score = analysis_dataset.sum(axis=1)

    link_score   = loaded_model.predict_proba(analysis_dataset)
    prob_info_present = round(100*(link_score[0][1]),2)
    return jsonify({"message":prob_info_present})


if __name__ == "__main__":
    init()
    app.run()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...