PSO-LightGBM回归预测模型代码PSO-LightGBM回归预测模型,Python代码,粒子群优化算法,多输入单输出,有示例数据,可以直接替换,机器学习模型,可以预测未来值
PSO-LightGBM回归预测模型代码PSO-LightGBM回归预测模型Python代码粒子群优化算法多输入单输出有示例数据可以直接替换机器学习模型可以预测未来值这是一个基于 粒子群优化算法 (PSO) 优化 LightGBM 超参数的回归预测模型完整代码。代码特点多输入单输出支持任意数量的特征列。内置示例数据使用 make_regression 生成模拟数据你可以直接替换为自己的 DataFrame。PSO 优化核心自动搜索 LightGBM 的关键超参数如 n_estimators, learning_rate, max_depth, num_leaves 等以最小化验证集误差。未来值预测包含预测未来时间步的演示逻辑。Python 代码实现import numpy as npimport pandas as pdimport lightgbm as lgbfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import mean_squared_error, r2_scorefrom sklearn.preprocessing import StandardScalerimport warnings忽略警告warnings.filterwarnings(‘ignore’)粒子群优化算法 (PSO) 核心类class PSO:def init(self, func, n_dim, pop_size20, max_iter30, lbNone, ubNone):“”func: 目标函数 (需要最小化的函数)n_dim: 优化参数的维度pop_size: 粒子数量max_iter: 最大迭代次数lb: 参数下界列表ub: 参数上界列表“”self.func funcself.n_dim n_dimself.pop_size pop_sizeself.max_iter max_iterself.lb np.array(lb) if lb else np.zeros(n_dim)self.ub np.array(ub) if ub else np.ones(n_dim) * 10# 初始化粒子位置和速度 self.x np.random.uniform(lowself.lb, highself.ub, size(pop_size, n_dim)) self.v np.random.uniform(low-1, high1, size(pop_size, n_dim)) # 个体最佳位置 (p_best) 和全局最佳位置 (g_best) self.p_best_x self.x.copy() self.p_best_y np.array([self.func(x) for x in self.x]) g_best_idx np.argmin(self.p_best_y) self.g_best_x self.p_best_x[g_best_idx].copy() self.g_best_y self.p_best_y[g_best_idx] # 惯性权重和加速常数 self.w 0.8 self.c1 1.5 self.c2 1.5 def run(self): for iter_num in range(self.max_iter): # 更新速度和位置 r1 np.random.random((self.pop_size, self.n_dim)) r2 np.random.random((self.pop_size, self.n_dim)) self.v self.w * self.v \ self.c1 * r1 * (self.p_best_x - self.x) \ self.c2 * r2 * (self.g_best_x - self.x) self.x self.x self.v # 边界处理 (超出边界则反弹或截断这里采用截断) self.x np.clip(self.x, self.lb, self.ub) # 计算适应度 current_y np.array([self.func(x) for x in self.x]) # 更新个体最佳 better_mask current_y PSO 循环训练多个临时模型找最优参数 - 用最优参数在全量训练集上训练最终模型 - 测试与预测。![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/9ab25025ae1046478dccc04800cd9cb4.png)X轴Sample index样本索引表示测试集中的第几个样本。Y轴SalePrice销售价格数值范围大约在 100,000 到 400,000 之间。图形内容绿色的虚线点代表了模型对每个测试样本预测出的价格。这种剧烈的上下波动通常意味着数据本身如房价具有较大的方差或者特征与目标值之间的关系非常复杂。完整代码 (含绘图功能)import numpy as npimport pandas as pdimport lightgbm as lgbimport matplotlib.pyplot as pltfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import mean_squared_error, r2_scorefrom sklearn.preprocessing import StandardScalerimport warningswarnings.filterwarnings(‘ignore’)粒子群优化算法 (PSO) 核心类class PSO:def init(self, func, n_dim, pop_size20, max_iter30, lbNone, ubNone):self.func funcself.n_dim n_dimself.pop_size pop_sizeself.max_iter max_iterself.lb np.array(lb) if lb else np.zeros(n_dim)self.ub np.array(ub) if ub else np.ones(n_dim) * 10self.x np.random.uniform(lowself.lb, highself.ub, size(pop_size, n_dim)) self.v np.random.uniform(low-1, high1, size(pop_size, n_dim)) self.p_best_x self.x.copy() self.p_best_y np.array([self.func(x) for x in self.x]) g_best_idx np.argmin(self.p_best_y) self.g_best_x self.p_best_x[g_best_idx].copy() self.g_best_y self.p_best_y[g_best_idx] self.w 0.8 self.c1 1.5 self.c2 1.5 def run(self): for iter_num in range(self.max_iter): r1 np.random.random((self.pop_size, self.n_dim)) r2 np.random.random((self.pop_size, self.n_dim)) self.v self.w * self.v \ self.c1 * r1 * (self.p_best_x - self.x) \ self.c2 * r2 * (self.g_best_x - self.x) self.x self.x self.v self.x np.clip(self.x, self.lb, self.ub) current_y np.array([self.func(x) for x in self.x]) better_mask current_y self.p_best_y self.p_best_x[better_mask] self.x[better_mask] self.p_best_y[better_mask] current_y[better_mask] current_g_best_idx np.argmin(self.p_best_y) if self.p_best_y[current_g_best_idx] self.g_best_y: self.g_best_x self.p_best_x[current_g_best_idx].copy() self.g_best_y self.p_best_y[current_g_best_idx] return self.g_best_x, self.g_best_y目标函数def objective_function(params, X_train, y_train, X_val, y_val):n_estimators int(params[0])learning_rate params[1]max_depth int(params[2])num_leaves int(params[3])min_child_samples int(params[4])n_estimators max(10, n_estimators) max_depth max(1, max_depth) num_leaves max(2, num_leaves) min_child_samples max(1, min_child_samples) learning_rate max(0.01, min(1.0, learning_rate)) model lgb.LGBMRegressor( n_estimatorsn_estimators, learning_ratelearning_rate, max_depthmax_depth, num_leavesnum_leaves, min_child_samplesmin_child_samples, verbose-1, random_state42 ) model.fit(X_train, y_train) y_pred model.predict(X_val) mse mean_squared_error(y_val, y_pred) return mse主程序与绘图def main():print(“— 开始 PSO-LightGBM 回归预测模型 (含绘图) —”)# A. 数据准备 (模拟房价数据以匹配图片风格) np.random.seed(42) n_samples 2000 # 增加样本量以便有足够的测试集绘图 n_features 10 # 生成特征 X_raw np.random.rand(n_samples, n_features) * 100 # 生成目标 y (模拟房价制造一些波动) # 基础价格 特征影响 随机噪声 y_raw 100000 2000 * X_raw[:, 0] 1500 * X_raw[:, 1]**2 - 500 * X_raw[:, 2] np.random.normal(0, 20000, n_samples) # 划分数据集 # 先分出测试集 (20%) X_train_full, X_test, y_train_full, y_test train_test_split(X_raw, y_raw, test_size0.2, random_state42) # 再从训练集中分出验证集用于 PSO (20% of training) X_train, X_val, y_train, y_val train_test_split(X_train_full, y_train_full, test_size0.2, random_state42) # 标准化 scaler StandardScaler() X_train scaler.fit_transform(X_train) X_val scaler.transform(X_val) X_test scaler.transform(X_test) X_train_full_scaled scaler.transform(X_train_full) # 用于最终训练 print(f数据形状: 训练集 {X_train.shape}, 验证集 {X_val.shape}, 测试集 {X_test.shape}) # B. PSO 优化 lb [50, 0.01, 3, 10, 1] ub [500, 0.3, 15, 200, 50] n_dim 5 print(n开始粒子群优化 (PSO)...) def func_wrapper(params): return objective_function(params, X_train, y_train, X_val, y_val) pso PSO(funcfunc_wrapper, n_dimn_dim, pop_size20, max_iter30, lblb, ubub) best_params, best_mse pso.run() print(fn最佳参数: n_est{int(best_params[0])}, lr{best_params[1]:.3f}, depth{int(best_params[2])}) # C. 训练最终模型 final_model lgb.LGBMRegressor( n_estimatorsint(best_params[0]), learning_ratebest_params[1], max_depthint(best_params[2]), num_leavesint(best_params[3]), min_child_samplesint(best_params[4]), verbose-1, random_state42 ) final_model.fit(X_train_full_scaled, y_train_full) # D. 在测试集上预测 (这就是图中要画的数据) y_pred_test final_model.predict(X_test) # 计算指标 test_mse mean_squared_error(y_test, y_pred_test) test_r2 r2_score(y_test, y_pred_test) print(fn测试集 MSE: {test_mse:.2f}, R²: {test_r2:.4f}) # E. 绘图 (复现图片风格) plt.figure(figsize(10, 6)) # 设置画布大小 # 绘制预测值 # 图片中是绿色虚线 (g--)标记为 o (虽然密集看起来像线) # 为了完全复现图片那种密集的竖线感我们使用 marker. 或默认线条但图片明显是离散点的连线或密集点 # 观察原图它是绿色的虚线且每个点都有标记看起来像 g--o 但点很密 plt.plot(y_pred_test, g--, labelPredicted SalePrice (Test), linewidth1, markersize4) # 设置标题和标签 (尽量匹配原图英文) plt.title(Predicted SalePrice (Test), fontsize12) plt.xlabel(Sample index, fontsize10) plt.ylabel(SalePrice, fontsize10) # 添加图例 plt.legend(locupper right) # 设置网格 (原图似乎没有明显网格但有边框) plt.grid(False) # 显示图表 plt.tight_layout() plt.show() # 如果需要保存图片 # plt.savefig(predicted_saleprice_test.png, dpi300)if name “main”:main()代码修改说明引入 Matplotlib添加了 import matplotlib.pyplot as plt。绘图逻辑 (plt.plot)使用了 y_pred_test测试集的预测值作为数据源。样式设置为 ‘g–’g 代表绿色 (green)-- 代表虚线 (dashed line)这与你提供的截图完全一致。添加了 label 以便显示图例。标签与标题将标题设为 “Predicted SalePrice (Test)”X 轴为 “Sample index”Y 轴为 “SalePrice”完全对应截图中的文字。在这里插入图片描述

相关新闻

在微网优化调度领域,风光柴储微网优化调度模型是一个经典的研究方向。今天我们来聊聊如何用MATLAB实现这个模型,并且结合粒子群多目标优化算法来进行求解

在微网优化调度领域,风光柴储微网优化调度模型是一个经典的研究方向。今天我们来聊聊如何用MATLAB实现这个模型,并且结合粒子群多目标优化算法来进行求解

风光柴储微网优化调度模型(matlb程序),粒子群多目标优化. 程序注释清晰明了,适合研究微网优化调度,微网容量配置方向基础入门的同学。首先,我们来看一下这个模型的基本结构。微网通常由风光发电、柴油发电机和储能系统…

2026/7/4 21:11:53 阅读更多 →
专业讲解:IRS2381C Real3™ 飞行时间图像传感器

专业讲解:IRS2381C Real3™ 飞行时间图像传感器

1. 概述与产品定位 IRS2381C是英飞凌(Infineon)与pmdtechnologies ag合作开发的REAL3™系列第四代3D飞行时间(ToF)图像传感器。它专为移动消费电子应用设计,如智能手机、增强现实(AR)设备等,旨在提供紧凑、低功耗且高性能的3D深度感测能力 。 该芯片采用单芯片设计方…

2026/5/17 9:17:54 阅读更多 →
AI助手:封闭与开放的不同命运

AI助手:封闭与开放的不同命运

英伟达CEO盛赞OpenClaw,它在GitHub狂揽超24.8万颗星,被云厂商疯抢;而豆包手机却遭大厂封杀。同样是AI替人干活,两者命运为何天差地别? 豆包手机:错在太独立 豆包手机核心是视觉识别,兼容性强但权…

2026/5/17 9:17:50 阅读更多 →

最新新闻

VisTR完全指南:从安装到推理,30分钟快速掌握视频实例分割神器

VisTR完全指南:从安装到推理,30分钟快速掌握视频实例分割神器

VisTR完全指南:从安装到推理,30分钟快速掌握视频实例分割神器 【免费下载链接】VisTR [CVPR2021 Oral] End-to-End Video Instance Segmentation with Transformers 项目地址: https://gitcode.com/gh_mirrors/vi/VisTR VisTR(End-to-…

2026/7/4 21:11:55 阅读更多 →
CANN/ge LLM-DataDist C++接口列表

CANN/ge LLM-DataDist C++接口列表

# LLM-DataDist-interface-list 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE…

2026/7/4 21:09:54 阅读更多 →
电流频率转换模块选型要考虑哪些参数?量程匹配、精度等级与封装形式的综合决策

电流频率转换模块选型要考虑哪些参数?量程匹配、精度等级与封装形式的综合决策

I/F(电流-频率)转换模块的选型直接影响测控系统的整体性能。面对不同的应用场景和技术要求,如何从量程、精度、温度范围、封装形式、输出频率等多个维度做出合理选择,是系统设计师需要解决的问题。本文结合智腾微电子JLHIF160的技…

2026/7/4 21:09:54 阅读更多 →
ThinkPHP 6.0.8反序列化漏洞深度剖析:从POP链原理到实战利用

ThinkPHP 6.0.8反序列化漏洞深度剖析:从POP链原理到实战利用

1. 项目概述:一次对ThinkPHP6.0.8反序列化漏洞的深度剖析最近在复盘一些经典的PHP框架漏洞案例,ThinkPHP6.0.8的反序列化漏洞(CVE-2021-36542)绝对是一个绕不开的经典。这个漏洞的利用链(POP Chain)设计得非…

2026/7/4 21:05:52 阅读更多 →
LiveViewJS生命周期完全解析:从Mount到HandleEvent的完整流程

LiveViewJS生命周期完全解析:从Mount到HandleEvent的完整流程

LiveViewJS生命周期完全解析:从Mount到HandleEvent的完整流程 【免费下载链接】liveviewjs LiveView-based library for reactive app development in NodeJS and Deno 项目地址: https://gitcode.com/gh_mirrors/li/liveviewjs 想要构建实时、响应式的Web应…

2026/7/4 21:05:52 阅读更多 →
天龙八部GM工具:3分钟掌握游戏数据自由编辑的终极方法

天龙八部GM工具:3分钟掌握游戏数据自由编辑的终极方法

天龙八部GM工具:3分钟掌握游戏数据自由编辑的终极方法 【免费下载链接】TlbbGmTool 某网络游戏的单机版本GM工具 项目地址: https://gitcode.com/gh_mirrors/tl/TlbbGmTool 还在为游戏中重复刷怪升级而烦恼?想要快速体验天龙八部单机版的全部内容…

2026/7/4 21:03:51 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻