欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > 机器学习-保存模型并根据模型进行预测 python demo

机器学习-保存模型并根据模型进行预测 python demo

2024/11/30 10:37:34 来源:https://blog.csdn.net/weixin_38316697/article/details/139951723  浏览:    关键词:机器学习-保存模型并根据模型进行预测 python demo

文章目录

  • 前言
    • 机器学习-保存模型,根据模型进行预测python demo
      • 1. 将我们创建的线性回归模型保存到本地
      • 2. 利用我们保存的模型进行房价预测 demo
      • 2. 利用我们保存的模型生成对应的预测线性图 demo

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


机器学习-保存模型,根据模型进行预测python demo

这次我要保存的就是上一章的线性回归模型来进行测试:
机器学习-线性回归模型python demo

1. 将我们创建的线性回归模型保存到本地

# 线性回归模型
import numpy as np
from sklearn.linear_model import LinearRegression
import pickle# 样本数据
X1 = np.array([[120, 3], [110, 3], [200, 4], [220, 4], [90, 2]])
y1 = np.array([1500000, 1600000, 2000000, 1600000, 1100000])# 创建线性回归模型
model = LinearRegression()
model.fit(X1, y1)# 保存模型
with open('model.pkl', 'wb') as f:pickle.dump(model, f)

运行这个文件,它会生成一个名为model.pkl的文件,这就是我们训练好的模型。

python LinearRegressionModel.py

在这里插入图片描述
下面就是我们保存的model.pkl文件
在这里插入图片描述

2. 利用我们保存的模型进行房价预测 demo

# app.py
from flask import Flask, request, jsonify, send_file
import pickle
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import io
import tracebackapp = Flask(__name__)
matplotlib.use('Agg')
# 设置中文字体
matplotlib.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体为黑体
matplotlib.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题# 加载模型
# 模型数据通常不会直接用于生成图像,而是用于预测或处理数据。
with open('model.pkl', 'rb') as f:model = pickle.load(f)@app.route('/predict', methods=['POST'])
def predict():data = request.get_json(force=True)# 数据验证if 'area' not in data or 'num' not in data:return jsonify({'error': 'Invalid input data. Please provide "area" and "num".'}), 400try:new_house = np.array([[float(data['area']), float(data['num'])]])except ValueError:return jsonify({'error': 'Invalid input data. "area" and "num" must be numeric values.'}), 400new_house = np.array([[data['area'], data['num']]])prediction = model.predict(new_house)return jsonify({'prediction': prediction[0]})if __name__ == '__main__':app.run(host='0.0.0.0', port=8081)

测试:

在这里插入图片描述

2. 利用我们保存的模型生成对应的预测线性图 demo

# app.py
from flask import Flask, request, jsonify, send_file
import pickle
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import io
import tracebackapp = Flask(__name__)
matplotlib.use('Agg')
# 设置中文字体
matplotlib.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体为黑体
matplotlib.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题# 加载模型
# 模型数据通常不会直接用于生成图像,而是用于预测或处理数据。
with open('model.pkl', 'rb') as f:model = pickle.load(f)@app.route('/predictUI', methods=['POST'])
def predictUI():try:data_list = request.get_json(force=True)if not isinstance(data_list, list):return jsonify({'error': '输入数据必须是对象列表。'}), 400predictions = []areas = []for data in data_list:if 'area' not in data or 'num' not in data:return jsonify({'error': '每个对象必须包含 "area" 和 "num" 属性。'}), 400try:new_house = np.array([[float(data['area']), float(data['num'])]])except ValueError:return jsonify({'error': '无效的输入数据。"area" 和 "num" 必须是数值。'}), 400prediction = model.predict(new_house)[0]predictions.append(prediction)areas.append(data['area'])# 生成图像plt.figure(figsize=(8, 6))plt.scatter(areas, predictions, color='blue', label='模型在给定面积下的预测房价-散点图')plt.plot(areas, predictions, color='red', label='模型在给定面积下的预测房价-线性图')plt.xlabel('面积 (平方米)')plt.ylabel('房价 (元)')plt.title('房价预测')plt.legend()# 将图像保存到内存缓冲区img_buf = io.BytesIO()plt.savefig(img_buf, format='png')img_buf.seek(0)# 清理图像以供下次使用plt.clf()plt.close()# 返回图像文件return send_file(img_buf, mimetype='image/png')except Exception as e:# 打印完整的错误堆栈跟踪信息traceback.print_exc()return jsonify({'error': '服务器内部错误'}), 500if __name__ == '__main__':app.run(host='0.0.0.0', port=8081)

测试:
在这里插入图片描述
传参:

[{"area": 120,"num": 3
},{"area": 110,"num": 3
},{"area": 95,"num": 2
},{"area": 220,"num": 3
},{"area": 150,"num": 3
},{"area": 70,"num": 1
}]

返回:
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com