我已经将一个机器学习模型保存为’finalized_model.sav’,并在Flask应用中使用它。当我在本地桌面运行以下代码时,一切正常,但在远程Ubuntu服务器上运行相同的代码时出现了错误:
@app.route('/studentData/', methods=['POST'])def parsing_data(): try: jsonData = request.get_json(force=True) data = json.loads(jsonData) requiredData = data['statement'] filename = 'finalized_model.sav' loaded_model = pickle.load(open(filename, 'rb')) count_vect = pickle.load(open('count_vect', 'rb')) result = loaded_model.predict(count_vect.transform([requiredData])) out = {"studentId": str(result)} return json.dumps(out) except: return "invalid data"
我想知道问题可能出在哪里,似乎问题在于加载’finalized_model.sav’,尽管我已经将所有文件放在了Flask应用(init.py)所在的同一目录下
回答:
首先,将
filename = 'finalized_model.sav'
改为
filename = './finalized_model.sav'
如果这仍然不起作用,请使用完整路径名
import osfilename = os.path.abspath(__file__) + os.sep + 'finalized_model.sav'