xgboost模型训练到部署

训练代码:


from numpy import loadtxt
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

dataset = loadtxt('data.csv', delimiter=",")
X=dataset[:,0:8]
Y=dataset[:,8]
seed = 7
test_size = 0.33
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=test_size, random_state=seed)
model = XGBClassifier()
eval_set = [(X_test, y_test)]
model.fit(X_train, y_train, early_stopping_rounds=10, eval_metric="logloss", eval_set=eval_set, verbose=False)

model.get_booster().save_model('xgb.h5')

训练成功后保存一个模型文件用于后面的部署,部署采用flask


from numpy import loadtxt
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from flask import Flask, render_template, request, redirect, url_for, flash, jsonify
import numpy as np
import xgboost as xgb

new_model = xgb.Booster(model_file='xgb.h5')#加载模型
app = Flask(__name__)

@app.route('/predict', methods=['POST'])
def xg_predict():
     if request.method == 'POST':
         get_input=request.get_json()['input']#从请求中获取数据
         get_input=xgb.DMatrix(get_input)#转换成xg的数据格式
         predicted =  new_model.predict(get_input)#预测
         print(predicted)
         return jsonify(predicted)#将预测结果返回给请求者

if __name__ == "__main__":
     app.run(debug=True,host='0.0.0.0')


     

数据可以自己制造,利用这个制造就行

部署后就可以远程请求了

猜你喜欢

转载自blog.csdn.net/zhou_438/article/details/111568380