使用多元线性回归简单预测

模型和代码

数据格式如下:前21列作为模型输入X,最后5列作为模型输出Y。
训练集:
在这里插入图片描述
测试集:
在这里插入图片描述
代码:

from numpy import genfromtxt
import numpy as np
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.multioutput import MultiOutputRegressor
from sklearn.preprocessing import PolynomialFeatures, StandardScaler
from sklearn.pipeline import make_pipeline
import matplotlib.pyplot as pltfrom joblib import dump, load   #保存模型# 读数据
data = genfromtxt('data2_calnsft.csv', delimiter=',')
data_test = genfromtxt('data_test_cal.csv', delimiter=',')# 定义X和Y
X = data[:, 0:21]
Y = data[:, 21:]
X_test = data_test[:, 0:21]
Y_test = data_test[:, 21:]  # 假设测试集中也包含了真实的Y值# 特征标准化和多项式特征转换
poly = PolynomialFeatures(degree=2, include_bias=False)# 使用GradientBoostingRegressor,并增大模型容量和训练次数
regression_model = make_pipeline(StandardScaler(),poly,MultiOutputRegressor(GradientBoostingRegressor(n_estimators=300, max_depth=5, learning_rate=0.05))
)
# MultiOutputRegressor(GradientBoostingRegressor(n_estimators=500, max_depth=15, learning_rate=0.05))
# 训练模型
regression_model.fit(X, Y)# # 保存模型
# dump(regression_model, 'regression_model.joblib')# 加载模型
regression_model = load('regression_model.joblib')
# 使用加载的模型进行预测
predictions = regression_model.predict(X_test)# 打印预测结果
print("预测结果:")
# print(predictions)
for pred in predictions:formatted_pred = ["{:.2f}".format(x) for x in pred]print(formatted_pred)

运行结果:
在这里插入图片描述

PYQT做了个简单的demo,代码如下:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QFileDialog, QTextEdit, QCheckBox
from PyQt5.QtCore import Qt  # 导入Qt用于复选框状态的检测
from joblib import load
import numpy as np
import pandas as pdclass PredictorApp(QWidget):def __init__(self):super().__init__()self.model = Noneself.data = Noneself.show_predictions = False  # 新增:记录是否显示预测结果self.initUI()def initUI(self):# 创建垂直布局layout = QVBoxLayout()# 加载模型按钮self.btn_load_model = QPushButton('Load model file')self.btn_load_model.clicked.connect(self.load_model)# 加载测试数据按钮self.btn_load_data = QPushButton('Load test data file')self.btn_load_data.clicked.connect(self.load_data)# 执行预测按钮self.btn_predict = QPushButton('Predict and save results')self.btn_predict.clicked.connect(self.predict)self.btn_predict.setEnabled(False)  # 初始时不可点击# 显示预测结果的复选框self.chk_show_predictions = QCheckBox('Show predictions in the app')self.chk_show_predictions.stateChanged.connect(self.toggle_show_predictions)# 预测结果显示框self.predictions_text = QTextEdit()self.predictions_text.setReadOnly(True)self.predictions_text.setVisible(False)  # 初始时不可见# 状态框self.status_text = QTextEdit()self.status_text.setReadOnly(True)# 添加控件到布局layout.addWidget(self.btn_load_model)layout.addWidget(self.btn_load_data)layout.addWidget(self.btn_predict)layout.addWidget(self.chk_show_predictions)layout.addWidget(self.status_text)layout.addWidget(self.predictions_text)# 设置窗口布局self.setLayout(layout)# 设置窗口标题和大小self.setWindowTitle('Regression Model Predictor')self.setGeometry(300, 300, 300, 300)  # 调整高度以容纳预测结果显示框def toggle_show_predictions(self, state):self.show_predictions = state == Qt.Checkedself.predictions_text.setVisible(self.show_predictions)if not self.show_predictions:self.predictions_text.clear()  # 不显示时清除文本框内容def load_model(self):fname, _ = QFileDialog.getOpenFileName(self, 'Open model file', '', 'Model files (*.joblib);; All files (*.*)')if fname:self.model = load(fname)self.status_text.append('Model loaded successfully.')if self.data is not None:self.btn_predict.setEnabled(True)def load_data(self):fname, _ = QFileDialog.getOpenFileName(self, 'Open test data file', '', 'CSV files (*.csv);; All files (*.*)')if fname:self.data = pd.read_csv(fname)self.status_text.append('Test data loaded successfully.')if self.model is not None:self.btn_predict.setEnabled(True)def predict(self):if self.model and isinstance(self.data, pd.DataFrame):try:# 预测predictions = self.model.predict(self.data.values)# 将预测结果四舍五入保留到小数点后三位predictions_rounded = np.round(predictions, decimals=3)# 计算具有多少行num_predictions = len(predictions_rounded)# 自定义每行的列数,假设我们选择3列columns_per_row = 3# 计算需要多少行来显示所有预测rows_required = (num_predictions + columns_per_row - 1) // columns_per_row# 构建用于显示的文本字符串predictions_text = ""for i in range(rows_required):# 计算每行的开始和结束索引start_index = i * columns_per_rowend_index = min(start_index + columns_per_row, num_predictions)# 获取每行的预测并将它们转换为字符串row_predictions = predictions_rounded[start_index:end_index]predictions_text += "\t".join(map(str, row_predictions)) + "\n"# 保存结果到CSV文件pd.DataFrame(predictions_rounded).to_csv('result.csv', index=False, header=False)self.status_text.append('Predictions saved to "result.csv" with 3 decimal places.')# 如果选择了显示预测结果,则显示在文本框中if self.show_predictions:# 显示格式化后的预测结果文本self.predictions_text.setPlainText(predictions_text)except Exception as e:self.status_text.append(str(e))else:self.status_text.append('Error: Model or data not loaded.')if __name__ == '__main__':app = QApplication(sys.argv)predictor_app = PredictorApp()predictor_app.show()sys.exit(app.exec_())

运行结果界面如下:

在这里插入图片描述

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

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

相关文章

解锁编程潜能:ChatGPT如何革新软件开发

目录 一、背景 二、功能描述 三、总结 一、背景 在这个飞速发展的数字时代,软件开发的效率和质量成了衡量一个开发者能力的重要标准。随着人工智能技术的不断进步,越来越多的开发者开始寻找能够提升工作效率的新方法。我就是其中之一,最近…

蓝桥杯刷题(十一)

1.卡片 反向思考&#xff0c;看k种卡片可以分给几位同学 代码 n int(input()) k 1 while k*(k1)<2*n:k1 print(k)2.美丽的2 代码 def f(x)->bool:while x:if x%102:return Truex//10return False cnt 0 for i in range(1,2021):if f(i):cnt1 print(cnt)3.单词分析 …

vue3+vite项目打包遇到的问题

一、项目打包出现空白页 vite.config.js中&#xff0c;添加base: ./ import { defineConfig } from vite import vue from vitejs/plugin-vueexport default defineConfig({base: ./, })router/index.js&#xff0c;将路由模式改成hash模式 import { createRouter, createWe…

【c++】string类---标准库(STL)中的string类

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;c_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.STL(标准库) 1.1 什么是STL 1.2 STL的版本 1.3 STL的六大组件 1.4 STL的重要性 1.5 如何学习STL 6.STL的缺陷 2. 为什么要学习st…

C++有关内存的那些事

个人主页&#xff1a;PingdiGuo_guo 收录转栏&#xff1a;C干货专栏 前言 本篇博客是讲解关于C内存的一些知识点的。 文章目录 前言 1.内存函数 1.1memcpy函数 1.2memmove函数 1.3 memset函数 2.各数据类型占用 2.1bool类型 2.2char类型 2.3short、int、long类型及整数…

SegFormer 项目排坑记录

SegFormer 项目排坑记录 任务记录创建conda环境 准备数据库和预训练参数程序配置修改测试可视化训练 任务 需要复现SegFormer分割项目&#xff0c;似乎还有点麻烦&#xff0c;参考这几个进行复现&#xff0c;记录下过程&#xff1a; SegFormer mmsegmentation CSDN博客 知乎博…

Docker 安装 Nginx 容器部署前端项目

先安装docker Docker安装详情 安装Nginx镜像 1、拉去取Nginx镜像 Nginx官方镜像 docker pull nginx 下载最新版Nginx镜像 (其实此命令就等同于 : docker pull nginx:latest ) docker pull nginx:xxx 下载指定版本的Nginx镜像 (xxx指具体版本号)我们拉去1.24.0的nginx镜像 …

视频号视频下载需要小程序提供下载支持!

前言&#xff1a;和大家分享一个视频号视频下载的方法&#xff01;可以帮助用户使用的工具将视频号视频保存到手机相册的&#xff01; 有时候在刷视频号的时候碰到自己喜欢的视频就情不自禁的想要把他下载下来&#xff0c; 1&#xff1a;遇到喜欢的视频视频怎么下载 例如&am…

中国传统游戏-幻方-c/c++实现

幻方&#xff08;Magic Square&#xff09;是一种将数字安排在正方形格子中&#xff0c;使每行、列和对角线上的数字和都相等的方法。 幻方也是一种中国传统游戏。旧时在官府、学堂多见。它是将从一到若干个数的自然数排成纵横各为若干个数的正方形&#xff0c;使在同一行、同…

Pytorch框架—文本情感分类问题项目(二)

整体过程就是首先拿到了数据集微博100K&#xff0c;对个这个评论数据集进行处理&#xff0c;分类标签和评论内容。对评论内容进行分词处理&#xff0c;之后进行词频统计对高词频的进行编码&#xff0c;低词频的进用《UNK》表示&#xff0c;并使用《PAD》把他们扩展到等长列表便…

MATLAB编译器配置:MinGW

使用 MATLAB 2022b版本&#xff0c;查询编译器时如上&#xff0c;想安装个MinGW编译器&#xff0c;自带的附加资源管理不好使&#xff0c;只能换个别的法子&#xff0c;经过一些参考&#xff0c;总结如下。 步骤1.在这里下载一个MinGW.最新版本是10.3.0.然后默认安装&#xff…

蓝桥杯刷题|03入门真题

目录 [蓝桥杯 2020 省 B1] 整除序列 题目描述 输入格式 输出格式 输入输出样例 说明/提示 代码及思路 [蓝桥杯 2020 省 AB3] 日期识别 题目描述 输入格式 输出格式 输入输出样例 说明/提示 代码及思路 [蓝桥杯 2019 省 B] 特别数的和 题目描述 输入格式 输出格…

谷歌的后量子密码学威胁模型

1. 引言 若现在不使用量子安全算法来加密数据&#xff0c;能够存储当前通信的攻击者最快十年内就能对其解密。这种先存储后解密的攻击是当前采用后量子密码学 (post-quantum cryptography&#xff0c;PQC) 背后的主要动机&#xff0c;但其他未来的量子计算威胁也需要一个深思熟…

GEC6818——QT开发之两个UI界面切换与表格显示DHT11数据

GEC6818——QT开发之两个UI界面切换与表格显示DHT11数据 使用环境: ubantu16 QT5.7 开发板GEC6818 实现要求&#xff1a; 利用A53按键1、按键2与温湿度传感器完成QT界面动态显示温湿度记录&#xff0c;并指定温湿度记录超过指定范围&#xff0c;进行报警&#xff08;LED&#…

天锐绿盾|公司开发部门源代码泄露防护系统,无感透明加密软件

#代码加密、代码防泄密、开发部门源码防泄漏、源代码透明加密、办公透明加密系统# 天锐绿盾作为一款针对企业数据安全的专业软件&#xff0c;特别是在防止公司开发部门源代码泄露方面&#xff0c;提供了智能无感透明加密保护系统。 德人合科技 | 天锐绿盾 PC地址&#xff1a; …

【经验分享】Wubuntu------体验Windows和Ubuntu的结合体

【经验分享】Wubuntu------体验Windows和Ubuntu的结合体 最近看到有一款Wubuntu的文章&#xff0c;对于习惯使用windows操作系统&#xff0c;又不熟悉ubuntu系统的程序员小白来说&#xff0c;可以说是福音了。目前的Wubuntu兼容性可能还有一点问题&#xff0c;如果再迭代几次的…

Python库Gym:打开机器学习与强化学习的大门

Python库Gym&#xff1a;打开机器学习与强化学习的大门 强化学习作为人工智能领域的重要分支&#xff0c;已经在各种领域展现出了巨大的潜力。为了帮助开发者更好地理解和应用强化学习算法&#xff0c;Python库Gym应运而生。Gym提供了一个开放且易于使用的环境&#xff0c;供开…

win电脑安装绿色版MySQL8

一、下载压缩包 下载mysql server的zip文件&#xff0c;地址&#xff1a;Windows (x86, 64-bit), ZIP Archive 解压后&#xff1a; 二、创建配置文件&#xff08;可忽略&#xff09; 配置文件可存放位置及名称&#xff1a; C:\WINDOWS\my.ini C:\WINDOWS\my.cnf C:\my.ini…

招个Java工程师,却发现了一个宝藏平台

一直关注磊哥的朋友都知道&#xff0c;磊哥出来创业&#xff08;做 Java 就业指导&#xff09;也快一年了&#xff0c;从最初的纠结彷徨、不知所措&#xff0c;到现在逐渐找到自己的节奏&#xff0c;也算是半个媳妇熬成婆了。 磊哥现在每天做的事儿&#xff0c;就是通过文章和…

使用Navicat远程连接Linux中的MySQL

一、登录MySQL数据库 mysql -uroot -pXjm123456 二、使用mysql数据库 use mysql&#xff1b; 三、查询user表中包含host的字段 select user,host from user;### 该字段中&#xff0c;localhost表示只允许本机访问&#xff0c;可以将‘localhost’改为‘%’&#xff0c;‘%’表…