2017-11-25 7 views
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() 

私のモデルの特徴ベクトルにユーザーの入力を変換するための最も効率的な方法は何ですか?

答えて

-1

コメントできませんので、回答は唯一のオプションです。 this bugに会ったようです。希望、それは関連していて、申し訳ありません。

関連する問題