2017-11-25 196 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長。我用醃菜保存了我的模型,現在正試圖根據用戶輸入進行預測。現在用戶輸入的形式是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' 

瓶的Web應用程序

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。希望,這是相關的,如果不相關,很抱歉。