python - Flask API 错误将 JSON 字符串转换为 pandas 数据帧
问题描述
我正在 Flask 中构建我的第一个 API。它应该从 Postman 接收 json 字符串,根据终端 POST 请求的日志,我可以在代码 print(json_) 的第 15 行看到我的 json 字符串。
但是下一行是一个问题: query = pd.read_json(json_, orient='index') 这行将 json 转换为 pd 数据帧,因此我可以将其转换为 numpy 数组并将其加载到我的机器学习模型中。在 Flask 之外,我的逻辑运行良好,但这里的代码被破坏了。我放了几个打印命令来跟踪代码断点,在我看来这个查询行。任何建议都非常感谢。先感谢您!弗拉德
API 的完整代码如下所示:
from flask import Flask, request, jsonify
import joblib
import traceback
import pandas as pd
import numpy as np
app = Flask(__name__)
@app.route('/predict', methods=['POST'])
def predict():
try:
json_ = request.json
print(json_)
query = pd.read_json(json_, orient='index')
print('query', query)
res = np.array(query).reshape(1,-1)
print('results', res)
prediction = rf.predict(res)
print(prediction)
return jsonify({'prediction': list(prediction)})
except:
return jsonify({'trace': traceback.format_exc()})
if __name__ == '__main__':
try:
port = int(sys.argv[1])
except:
port = 12345
rf = joblib.load('random_forest_model_diabetes_refined_31_5_2021.pkl') # Load ML model
print ('Model loaded')
app.run(debug=True, port=port)
解决方案
当我替换查询行时
query = pd.read_json(json_, orient='index')
和:
query = pd.json_normalize(json_)
有用。我很困惑。
推荐阅读
- javascript - 文件被选中后是否可以更改并且仍然阅读其文本?
- enums - 枚举中每个元素的 Systemverilog 覆盖点
- windows - 在 Azure 上的 Windows 中禁用网络位置向导
- batch-file - 当我直接运行.bat文件时,它不起作用
- reactjs - 不变的破坏:资源不能用作本机方法参数
- lua - 所有分配的 Tarantool 2.3 空间 memtx 被占用
- spring - 如何在 Spring Application(不是 SpringBoot Application)中配置 Springboot 的 2.x 执行器?
- javascript - 如何为自定义组件创建徽章组件?
- reactive-programming - 转换单声道
订购对象 - javascript - 如何仅在我的另一个 div 中修复 div?