一、用tensorflow.keras训练一个模型
数据是games-expand.csv,有22906行11列,其中第一行是标题,最后一列是标签。
数据网址 https://github.com/bgweber/Twitch/raw/master/Recommendations/games-expand.csvhttps://github.com/hwanji/Flask-tensorflow.keras-model
部分数据如下图所示
![2b1154d8b039056095df5b00f4e66efc.png](https://i-blog.csdnimg.cn/blog_migrate/c1a0769c8bf0dc29fa3d6310851d0bd2.png)
下面训练一个深度学习模型,并保存模型
import pandas as pd
from tensorflow.keras import models, layers
class_count = 2 #类别数量
# 加载样本数据集,划分为x和y DataFrame
df = pd.read_csv("games-expand.csv")
x = df.drop(['label'], axis=1)
y = df['label']
# 定义Keras模型
model = models.Sequential()
model.add(layers.Dense(64, activation='relu', input_shape=(10,)))
model.add(layers.Dropout(0.1))
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dropout(0.1))
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(class_count, activation='softmax'))
model.summary()
# 编译并拟合模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
history = model.fit(x, y, epochs=100, batch_size=100,
validation_split = 0.2, verbose=1)
# 以H5格式保存模型
model.save("games.h5")
二、利用Flask部署模型
利用flask部署模型,可以在浏览器中调用该模型进行预测。
import flask
import pandas as pd
from tensorflow.keras.models import load_model
host='0.0.0.0'
# 实例化 flask
app = flask.Flask(__name__)
# 加载模型
global graph
#graph=tf.reset_default_graph()
model = load_model('games.h5')
# 将预测函数定义为一个路由
@app.route("/predict", methods=["GET","POST"])
def predict():
data = {"success": False}
params = flask.request.json
if (params == None):
params = flask.request.args
# 若发现参数,则返回预测值
if (params != None):
print(f"params {'='*50} n",params)
x=pd.DataFrame.from_dict(params, orient='index').transpose()
print(f"x {'='*50} n",x)
y_predict = model.predict(x) #预测结果是一个二元列表
y_predict = np.argmax(y_predict[0]) #取概率最大的一个id
print(f"y_predict {'='*50} n",y_predict)
data["prediction"] = str(y_predict)
data["success"] = True
# 返回Json格式的响应
return flask.jsonify(data)
# 启动Flask应用程序,允许远程连接
if __name__ == '__main__':
app.run(debug=False,host=host)
三、用部署的模型进行预测
启动第二步后,在浏览器中输入要预测的数据,特征数量要与训练时的特征数量相同,这里是10个特征。
http://127.0.0.1:5000/predict?g1=1&g2=0&g3=0&g4=0&g5=0&g6=0&g7=0&g8=0&g9=0&g10=0
可以得到下面的返回结果
![214bc4ffbb8724a11c6da30e2ce6aef9.png](https://i-blog.csdnimg.cn/blog_migrate/d3d4c72b5e255a075bea868af53d109e.png)
"prediction":"0"表示预测结果是第0类。