机器学习-保存模型并根据模型进行预测 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
}]

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/35174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国密SSL证书提升网络安全

随着数字化时代的到来,网络安全已经成为全球关注的焦点。在这种背景下,SSL证书作为保护数据传输安全的重要工具,其重要性日益凸显。 数字证书产品有以下几种类别: 单域名SSL证书:为单一网站提供安全保护。 多域名SS…

【PyTorch函数解析】einsum的用法示例

一、前言 einsum 是一个非常强大的函数,用于执行张量(Tensor)运算。它的名称来源于爱因斯坦求和约定(Einstein summation convention),在PyTorch中,einsum 可以方便地进行多维数组的操作和计算…

DWC USB2.0协议学习1--产品概述

本章开始学习记录DWC_otg控制器(新思USB2.0)的特点、功能和应用。 新思USB 2.0 IP主要有两个文档需要参考: 《DesignWare Cores USB 2.0 Hi-Speed On-TheGo (OTG) Data book》 《DesignWare Cores USB 2.0 Hi-Speed On-TheGo (OTG) Progra…

解决IMX6ULL GPIO扩展板PWM7/8中的pwm0/period后卡死问题

前言 本篇文章主要是记录解决百问网论坛上面设置 IMX6ULL GPIO扩展板PWM7/8中的pwm0/period后卡死问题,如下图: 一、查看原理图,找出对应引脚 在这里我们如何确定哪个扩展口中的引脚输出PWM波呢?我们可以通过查看原理图。 查看…

作业6.20

1.已知网址www.hqyj.com截取出网址的每一个部分(要求,该网址不能存入文件中) 2.将配置桥接网络的过程整理成文档,发csdn 步骤i:在虚拟机设置中启用桥接模式 1. 打开VMware虚拟机软件。 2. 选择您想要配置的虚拟机,点击菜单栏中的“…

C++ 基础:指针和引用浅谈

指针 基本概念 在C中,指针是存储其他变量的内存地址的变量。 我们在程序中声明的每个变量在内存中都有一个关联的位置,我们称之为变量的内存地址。 如果我们的程序中有一个变量 var,那么&var 返回它的内存地址。 int main() {int var…

北大医院副院长李建平:用AI解决临床心肌缺血预测的难点、卡点和痛点

2024年6月14日,第六届北京智源大会在中关村展示中心开幕,海内外的专家学者围绕人工智能关键技术路径和应用场景,展开了精彩演讲与尖峰对话。在「智慧医疗和生物系统:影像、功能与仿真」论坛上,北京大学第一医院副院长、…

java复习宝典,jdbc与mysql数据库

一.java 1.面向对象知识 (1)类和对象 类:若干具有相同属性和行为的对象的群体或者抽象,类是创建对象的模板,由属性和行为两部分组成。 类是对象的概括或者抽象,对象是类的实例化。 举例:例如车有很多类型&#xf…

计算机系统基础知识(下)

嵌入式系统以及软件 嵌入式系统是为了特定应用而专门构建且将信息处理过程和物理过程紧密结合为一体的专用计算机系统,这个系统目前以涵盖军事,自动化,医疗,通信,工业控制,交通运输等各个应用领域&#xff…

【Matlab 六自由度机器人】机器人动力学之推导拉格朗日方程(附MATLAB机器人动力学拉格朗日方程推导代码)

【Matlab 六自由度机器人】机器人动力学概述 近期更新前言正文一、拉格朗日方程的推导1. 单自由度系统2. 单连杆机械臂系统3. 双连杆机械臂系统 二、MATLAB实例推导1. 机器人模型的建立2. 动力学代码 总结参考文献 近期更新 【汇总】 【Matlab 六自由度机器人】系列文章汇总 …

JVM专题十:JVM中的垃圾回收机制

在JVM专题九:JVM分代知识点梳理中,我们主要介绍了JVM为什么采用分代算法,以及相关的概念,本篇我们将详细拆分各个算法。 垃圾回收的概念 垃圾回收(Garbage Collection,GC)确实是计算机编程中的…

【自然语言处理系列】探索NLP:使用Spacy进行分词、分句、词性标注和命名实体识别,并以《傲慢与偏见》与全球恐怖活动两个实例文本进行分析

本文深入探讨了scaPy库在文本分析和数据可视化方面的应用。首先,我们通过简单的文本处理任务,如分词和分句,来展示scaPy的基本功能。接着,我们利用scaPy的命名实体识别和词性标注功能,分析了Jane Austen的经典小说《傲…

discuz插件之优雅草超级列表互动增强v1.2版本更新

https://doc.youyacao.com/9/2142 v1.2更新 discuz插件之优雅草超级列表互动增强v1.2版本更新 [title]20220617 v1.2发布[/title] 增加了对php8的支持 增加了 对discuz3.5的支持

RocketMQ源码学习笔记:Broker启动流程

这是本人学习的总结,主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、Broker启动流程2、一些重要的类2.1、MappedFile2.2、MessgeStore2.3、MessageStore的加载启动流程 3、技术亮点3.1、 内存映射3.1.1、简介3.1.2、源码 1、Broker启动流程 Broker启动流程…

RabbitMQ中lazyqueue队列

lazyqueue队列非常强悍 springboot注解方式开启 // 使用注解的方式lazy.queue队列模式 非常GoodRabbitListener(queuesToDeclare Queue(name "lazy.queue",durable "true",arguments Argument(name "x-queue-mode",value "lazy&…

3.蓝牙模块HC-08

目录 一.简介​编辑 二.主要参数 三.模块引脚说明 四、LED指示灯状态 五.AT指令 5.1AT指令重点 5.2 AT指令注意点 5.3 AT指令集 六.AT常用指令 6.1 测试指令 AT 6.2 查询当前参数ATRX 6.3设置主从模式 ATROLE 6.4设置蓝牙模式 ATNAME 6.5 设置波特率 …

YOLOv5改进(八)--引入Soft-NMS非极大值抑制

文章目录 1、前言2、各类NMS代码实现2.1、general.py 3、各类NMS实现3.1、Soft-NMS3.2、GIoU-NMS3.3、DIoU-NMS3.4、CIoU-NMS3.5、EIoU-NMS 4、目标检测系列文章 1、前言 目前yolov5使用的是NMS进行极大值抑制,本篇文章是要将各类NMS添加到yolov5中,同时…

6.25作业

1.整理思维导图 2.终端输入两个数,判断两数是否相等,如果不相等,判断大小关系 #!/bin/bash read num1 read num2 if [ $num1 -eq $num2 ] then echo num1num2 elif [ $num1 -gt $num2 ] then echo "num1>num2" else echo &quo…

200.回溯算法:子集||(力扣)

class Solution { public:vector<int> res; // 当前子集vector<vector<int>> result; // 存储所有子集void backtracing(vector<int>& nums, int index, vector<bool>& used) {result.push_back(res); // 将当前…

【嵌入式Linux】<总览> 进程间通信(更新中)

文章目录 前言 一、管道 1. 概念 2. 匿名管道 3. 有名管道 二、内存映射区 1. 概念 2. mmap函数 3. 进程间通信&#xff08;有血缘关系&#xff09; 4. 进程间通信&#xff08;没有血缘关系&#xff09; 5. 拷贝文件 前言 在文章【嵌入式Linux】&#xff1c;总览&a…