0
私は仕事の給与を予測するためのWebアプリケーションを作成しようとしています。私は自分のコンピュータ上でモデルをオフラインで訓練しましたが、今はユーザーの入力に基づいて予測を行うFlaskアプリケーションを作成しようとしています。1レコードを使用してユーザー入力から予測のダミー変数を作成します。
Training script: https://github.com/datomnurdin/webscraping-indeed/blob/master/analyzer.ipynb
Model: https://github.com/datomnurdin/webscraping-indeed/blob/master/model.pkl
Index dict: https://github.com/datomnurdin/webscraping-indeed/blob/master/cat
Flask web app: https://github.com/datomnurdin/job-salary-prediction
だから今、私の特徴ベクトルは470の長さです。私はpickleを使用してモデルを保存しましたが、今はユーザーの入力に基づいて予測しようとしています。ユーザー入力は3つの変数(都市、タイトル、要約)の形式になりました。
私のモデルの特徴ベクトルにユーザー入力を変換する方法を知らないので、私はこのエラーメッセージを受け取りました。
エラーメッセージ
[2017-11-25 19:21:36,504] ERROR in app: Exception on /predict [POST]
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 2164, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1743, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1646, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1741, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1727, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/ZERO/Documents/Github/job-salary-prediction/app.py", line 27, in get_delay
logmodel = pickle.load(pkl_file)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1384, in load
return Unpickler(file).load()
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 864, in load
dispatch[key](self)
KeyError: '\x00'
フラスコウェブアプリ
from flask import Flask, request, render_template
import pickle
import numpy as np
app = Flask(__name__)
@app.route('/')
def home():
return render_template('home.html')
@app.route('/predict',methods=['POST','GET'])
def get_delay():
if request.method=='POST':
result=request.form
#Prepare the feature vector for prediction
pkl_file = open('cat', 'rb')
index_dict = pickle.load(pkl_file)
new_vector = np.zeros(len(index_dict))
try:
new_vector[index_dict['city']] = 1
except:
pass
try:
new_vector[index_dict['title']] = 1
except:
pass
try:
new_vector[index_dict['summary']] = 1
except:
pass
pkl_file = open('model.pkl', 'rb')
logmodel = pickle.load(pkl_file)
prediction = logmodel.predict(new_vector)
return render_template('result.html',prediction=prediction)
if __name__ == '__main__':
app.run()
私のモデルの特徴ベクトルにユーザーの入力を変換するための最も効率的な方法は何ですか?