如何设置API端点,加载模型并进行预测?

问题描述

我正在尝试运行此代码(感谢A.B。)

from flask import Flask,jsonify
import pickle
import pandas as pd
import requests

app = Flask(__name__)
@app.route('/predict',methods=['POST'])
def predict():
     json_features = requests.json
     query_df = pd.DataFrame(json_features)
     features = pd.get_dummies(query_df)
    
     prediction = kmeans.predict(features)
     return jsonify({'prediction': list(prediction)})
if __name__ == '__main__':
     kmeans = pickle.load(open("C:\\Users\\ryans\\kmeans.pkl","rb"))
     app.run(port=8080)
     

这是回溯:

回溯(最近通话最近一次):

  File "<ipython-input-27-175d864bb92b>",line 17,in <module>
    app.run(port=8080)

  File "C:\Users\ryans\Anaconda3\lib\site-packages\flask\app.py",line 990,in run
    run_simple(host,port,self,**options)

  File "C:\Users\ryans\Anaconda3\lib\site-packages\werkzeug\serving.py",line 1052,in run_simple
    inner()

  File "C:\Users\ryans\Anaconda3\lib\site-packages\werkzeug\serving.py",line 1005,in inner
    fd=fd,File "C:\Users\ryans\Anaconda3\lib\site-packages\werkzeug\serving.py",line 848,in make_server
    host,app,request_handler,passthrough_errors,ssl_context,fd=fd

  File "C:\Users\ryans\Anaconda3\lib\site-packages\werkzeug\serving.py",line 740,in __init__
    HTTPServer.__init__(self,server_address,handler)

  File "C:\Users\ryans\Anaconda3\lib\socketserver.py",line 452,in __init__
    self.server_bind()

  File "C:\Users\ryans\Anaconda3\lib\http\server.py",line 137,in server_bind
    socketserver.Tcpserver.server_bind(self)

  File "C:\Users\ryans\Anaconda3\lib\socketserver.py",line 466,in server_bind
    self.socket.bind(self.server_address)

OSError: [WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissions

最后,这是我正在使用的模型。

from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
from sklearn import datasets#Iris Dataset
iris = datasets.load_iris()
X = iris.data#KMeans
km = KMeans(n_clusters=3)
km.fit(X)
km.predict(X)
labels = km.labels_#Plotting
fig = plt.figure(1,figsize=(7,7))
ax = Axes3D(fig,rect=[0,0.95,1],elev=48,azim=134)
ax.scatter(X[:,3],X[:,0],2],c=labels.astype(np.float),edgecolor="k",s=50)
ax.set_xlabel("Petal width")
ax.set_ylabel("Sepal length")
ax.set_zlabel("Petal length")
plt.title("K Means",fontsize=14)


import pickle
filename = 'C:\\Users\\ryans\\kmeans.pkl'
pickle.dump(km,open(filename,'wb'))
 

# some time later...
pickle_in = open('C:\\Users\\ryans\\kmeans.pkl','rb')
example_dict = pickle.load(pickle_in)

如何使模型达到某种API端点,进行预测并向我显示结果?谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)