To start a HTTP tunnel forwarding to your local port 80, run this next:
./ngrok http 8080
copyForwarding
鳶尾花
cd
創建資料夾
mkdir iris
cd iris
訓練並保存模型
vim train_model.py
import pickle
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn import tree
# simple demo for traing and saving model
iris=datasets.load_iris()
x=iris.data
y=iris.target
#labels for iris dataset
labels ={
0: "setosa",
1: "versicolor",
2: "virginica"
}
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=.25)
classifier=tree.DecisionTreeClassifier()
classifier.fit(x_train,y_train)
predictions=classifier.predict(x_test)
#export the model
model_name = 'model.pkl'
print("finished training and dump the model as {0}".format(model_name))
pickle.dump(classifier, open(model_name,'wb'))
python train_model.py
安裝 Python
yum install python
安裝 epel-release
yum install epel-release
安裝 python-pip
yum install python-pip -y
更新 pip
pip install --upgrade pip
安裝 Sklearn
pip install sklearn
加載模型並調用 API
vim server.py
import pickle
from flask import Flask, request, jsonify
app = Flask(__name__)
# Load the model
model = pickle.load(open('model.pkl', 'rb'))
labels = {
0: "versicolor",
1: "setosa",
2: "virginica"
}
@app.route('/api', methods=['POST'])
def predict():
# Get the data from the POST request.
data = request.get_json(force = True)
predict = model.predict(data['feature'])
return jsonify(predict[0].tolist())
if __name__ == '__main__':
app.run(debug = True, host = '0.0.0.0')
python server.py
安裝 Flask
pip install flask
vim client.py
import requests
# Change the value of experience that you want to test
url = 'http://127.0.0.1:5000/api'
feature = [[1.8, 3.0, 2.2, 0.2]]
labels ={
0: "setosa",
1: "versicolor",
2: "virginica"
}
r = requests.post(url,json={'feature': feature})
print(labels[r.json()])