如何用Python制作API

2024-10-08 19:21:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为我的支持向量机模型制作一个API,通过API来预测数据。你知道吗

我尝试了下面的代码,但在运行http://127.0.0.1:5000/predict/URL时出错。你知道吗

错误:

* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [02/Jan/2019 11:36:14] "GET / HTTP/1.1" 404 -
NameError: name 'svmModel' is not defined
127.0.0.1 - - [02/Jan/2019 11:36:32] "GET /predict HTTP/1.1" 500 -

我有一些地址和什么可以通过我的模型预测城市ID。我的模型工作得很好。你知道吗

更新错误:

An exception has occurred, use %tb to see the full traceback.

SystemExit: 1

D:\Conda\Conda_install\lib\site-packages\IPython\core\interactiveshell.py:3275: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
  warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)

编辑1

http://127.0.0.1:5000/predict?property_address=<address>我只得到一个地址输出,但我想在浏览器上发布所有地址预测。你知道吗

例如:

@app.route('/predict', methods=['GET'])
def predict():
    property_address = request.args.get('property_address')
    print (property_address)
    # Get values from browser
    input_data = "SELECT Detail_ID,PROPERTY_ADD + ', ' + MAIN_LOCALITY + ', ' + CITY AS PROPERTY_ADDRESS FROM NHB.DBO.HFC_UNPROCESS_01JUL2018TO30SEP2018 WHERE PROPERTY_ADD is not null"
    df = pd.read_sql(input_data,cnxn)  
    df = pd.DataFrame(df)  
    df.fillna({'PROPERTY_ADDRESS': 'NA'}, inplace=True)
    test_data = df['PROPERTY_ADDRESS'].values.tolist()

    for i in range(0, 5):
            #print (test_data[i])
        class_prediced = svmModel.predict(test_data)[0] 
        output = "Predicted City ID: " + str(class_prediced)
        #print (output)
        return (output)

在这里,我使用for循环来获得多个输出。你知道吗

输入:

['Cabin K-1, Laxmi Rd, Aarey Colony, Goregaon East, Mumbai, Maharashtra 400065, India',
'Aarey Colony, Goregaon East, Mumbai, Maharashtra, India',
'Goregaon East, Mumbai, Maharashtra, India']`

预期产量:

在浏览器上:

'Cabin K-1, Laxmi Rd, Aarey Colony, Goregaon East, Mumbai, Maharashtra 400065, India'
Predicted City ID: 1

'Aarey Colony, Goregaon East, Mumbai, Maharashtra, India'
Predicted City ID: 1

'Goregaon East, Mumbai, Maharashtra, India'
Predicted City ID: 1

请建议


Tags: idcitydfdataaddressexitpropertypredict
2条回答

在这一行中,您使用了svmModel而不是svmIrisModel,后者是全局变量

class_prediced = svmModel.predict(test_data)[0]

因为您期望property_address作为请求参数

property_address = request.args.get('property_address')

将此作为URL请求可能会使您避免出现以下错误:

http://127.0.0.1:5000/predict?property_address=<address>

自定义property_address以获得所需的输出。你知道吗

相关问题 更多 >

    热门问题