Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 错误:TypeError:类型为';int64';JSON不可序列化,JSON.decoder.JSONDecodeError:应为值:第1行第1列(字符0)_Python_Json_Flask_Scikit Learn - Fatal编程技术网

Python 错误:TypeError:类型为';int64';JSON不可序列化,JSON.decoder.JSONDecodeError:应为值:第1行第1列(字符0)

Python 错误:TypeError:类型为';int64';JSON不可序列化,JSON.decoder.JSONDecodeError:应为值:第1行第1列(字符0),python,json,flask,scikit-learn,Python,Json,Flask,Scikit Learn,我试图使用Flask部署我的ML模型,但我得到了上面的错误。 下面的代码是iris数据集上的随机森林分类器 import pandas as pd from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import accu

我试图使用Flask部署我的ML模型,但我得到了上面的错误。 下面的代码是iris数据集上的随机森林分类器

import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
加载数据集 拆分数据集 构建模型 训练分类器 物种预测 检查准确性 烧瓶代码: 错误:

回溯(最近一次调用last):文件“new1.py”,第40行,在 打印(r.json())文件 “/home/saurabh/anaconda3/lib/python3.6/site packages/requests/models.py”, 第896行,在json返回complexjson.loads(self.text,**kwargs)文件中 “/home/saurabh/anaconda3/lib/python3.6/json/init.py”,第354行,在 加载返回_default_decoder.decode文件“/home/第357行,在 原始解码从 None json.decoder.JSONDecodeError:预期值:第1行第1列 (字符0)


如果JSON解码失败,
r.JSON()

需要注意的是,调用
r.json()
的成功并不表示响应成功。某些服务器可能会在失败的响应中返回json对象(例如HTTP 500的错误详细信息)。将解码并返回此类json。若要检查请求是否成功,请使用
r.raise\u for\u status()
或选中
r。状态代码是您所期望的

因此,检查您的状态代码,如果它是200,那么它应该解析json 如果是204,则URL有问题。 使用

print(r.status_code)

更多信息

您在哪一行收到错误?我得到了状态代码,因为500500内部服务器错误通常发生在编程错误或服务器过载时。一个非常好的主意是在那里有一个漂亮的页面,因为您的应用程序迟早会失败
X_train, X_test, y_train, y_test = train_test_split(X, y , 
random_state = 1)
clf = RandomForestClassifier(n_estimators=100,n_jobs=2)
clf.fit(X_train, y_train)
predicted = clf.predict(X_test)
print(predicted)
print(accuracy_score(predicted, y_test))

import pickle as pickle
pickle.dump(clf,open("rfc.pkl","wb"))
my_rfc = pickle.load(open("rfc.pkl","rb"))

import requests
import json

url="http://127.0.0.1:8000/api"
data=json.dumps({'sl':5.5,'sw':3.2,'pl':3.7,'pw':1.2})
r=requests.post(url,data)

print (r.json())
import numpy as np 
from flask import Flask
from flask import abort
from flask import jsonify
from flask import request
import pickle as pickle

my_rfc = pickle.load(open("rfc.pkl","rb"))

app=Flask(__name__)

@app.route('/')
def index():
    return "Iris prediction"

@app.route('/api',methods=['POST'])

def make_predict():

 data=request.get_json(force=True)
 data_request = [[data['sl'],data['sw'],data['pl'],data['pw']]]
 data_request = np.array(data_request).reshape(1,4)
 y_hat=my_rfc.predict(data_request)
 output=[y_hat[0]]
 return jsonify(results=output)


if __name__ == '__main__':
  app.run(port=8000,debug=True)
print(r.status_code)