用Stacking集成学习算法实现精准预测
集成学习算法Stacking组合随机森林AdaBoost检验评估未来预测 Stacking 的原理是通过组合多个不同的学习模型将它们的预测作为输入训练一个元学习器来进行最终的预测 不同于 Bagging 和 BoostingStacking 的核心是使用一个新的模型来学习如何有效地整合其他模型的预测 该程序可以用于研究预测气温、降水、风速、太阳能等该方法非常新颖便于发表高质量文章另外由于程序包含了未来预测的因此还可用于要素预测平台建设 1、该python程序的输入数据是两个excel文件第一个输入数据是建模文件包含多个特征量和单个目标量预测值用于模型的训练和测试第二个excel文件用于未来预测的输入数据包含未来多个特征量 2、本程序集合了随机森林和AdaBoost单个模型的预测可能存在偏差或方差难以表现出最佳效果但通过集成多个模型能够综合各自的优点减少预测误差提升模型的鲁棒性和准确性创新点 3、程序自动采用均方误差 (MSE)、均方根误差 (RMSE)、平均绝对误差 (MAE)、拟合优度 (R-squared)对模型进行评估 4、另外本程序采用yx的散点图的形式配合上面的评估结果便于出论文 5、程序输入的第二个excel文件用于未来预测因此本程序还具备应用的功能程序最后还带有未来预测的代码能够用于要素预测的平台建设 6、本程序的输出结果出了图形和模型的评估结果外还生成了两个excel文件一个是预测值excel文件相对于测试集一个是未来值excel文件 本程序的使用方法只需要修改更新两个excel文件该程序就能运行在数据科学领域集成学习算法一直是提升模型性能的有力武器。今天咱们就来唠唠一种超有趣的Stacking集成学习算法它巧妙地组合了随机森林和AdaBoost还自带检验评估和未来预测功能简直是“六边形战士”Stacking原理速览Stacking的原理简单来说就是把多个不同的学习模型组合起来。这些模型各自做出预测然后把它们的预测结果作为新的输入去训练一个元学习器这个元学习器给出的就是最终预测啦。它和Bagging、Boosting可不一样核心在于使用全新的模型来学习怎么把其他模型的预测有效整合起来就像是给一群各有所长的小伙伴找了个“领导”让大家发挥出最大合力。这种方法为啥厉害呢它可以用来研究预测好多东西像气温、降水、风速、太阳能这些非常适合发高质量文章。而且因为有未来预测功能在要素预测平台建设里也能大显身手。Python实现全解析咱们直接看代码。这个程序的输入数据是两个Excel文件。第一个是建模文件里面包含多个特征量和单个目标量也就是预测值用来训练和测试模型。第二个Excel文件则是未来预测要用的里面是未来的多个特征量。import pandas as pd from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestRegressor, AdaBoostRegressor from sklearn.metrics import mean_squared_error, mean_absolute_error from sklearn.metrics import r2_score import matplotlib.pyplot as plt import numpy as np这里咱们导入了要用的各种库pandas用来处理数据sklearn里的各种工具帮咱们做模型训练和评估matplotlib用来画图。# 读取建模文件 data pd.read_excel(modeling_file.xlsx) X data.drop(target_variable, axis 1) y data[target_variable] X_train, X_test, y_train, y_test train_test_split(X, y, test_size 0.2, random_state 42)这部分代码读取了建模文件把特征和目标值分开然后又把数据分成训练集和测试集test_size 0.2表示测试集占20% 。# 随机森林模型 rf RandomForestRegressor(n_estimators 100, random_state 42) rf.fit(X_train, y_train) rf_pred rf.predict(X_test)随机森林模型这里咱们设置了n_estimators 100也就是100棵树然后用训练集训练模型再用测试集做预测。# AdaBoost模型 ada AdaBoostRegressor(n_estimators 100, random_state 42) ada.fit(X_train, y_train) ada_pred ada.predict(X_test)AdaBoost模型类似同样设置100个估计器训练并预测。集成学习算法Stacking组合随机森林AdaBoost检验评估未来预测 Stacking 的原理是通过组合多个不同的学习模型将它们的预测作为输入训练一个元学习器来进行最终的预测 不同于 Bagging 和 BoostingStacking 的核心是使用一个新的模型来学习如何有效地整合其他模型的预测 该程序可以用于研究预测气温、降水、风速、太阳能等该方法非常新颖便于发表高质量文章另外由于程序包含了未来预测的因此还可用于要素预测平台建设 1、该python程序的输入数据是两个excel文件第一个输入数据是建模文件包含多个特征量和单个目标量预测值用于模型的训练和测试第二个excel文件用于未来预测的输入数据包含未来多个特征量 2、本程序集合了随机森林和AdaBoost单个模型的预测可能存在偏差或方差难以表现出最佳效果但通过集成多个模型能够综合各自的优点减少预测误差提升模型的鲁棒性和准确性创新点 3、程序自动采用均方误差 (MSE)、均方根误差 (RMSE)、平均绝对误差 (MAE)、拟合优度 (R-squared)对模型进行评估 4、另外本程序采用yx的散点图的形式配合上面的评估结果便于出论文 5、程序输入的第二个excel文件用于未来预测因此本程序还具备应用的功能程序最后还带有未来预测的代码能够用于要素预测的平台建设 6、本程序的输出结果出了图形和模型的评估结果外还生成了两个excel文件一个是预测值excel文件相对于测试集一个是未来值excel文件 本程序的使用方法只需要修改更新两个excel文件该程序就能运行单个模型预测可能有偏差或方差表现不是最佳。但通过集成多个模型就能综合优点减少误差让模型更稳更准。这就是咱这个方法的创新点啦。# Stacking整合预测 stacked_pred np.column_stack((rf_pred, ada_pred)) meta_model RandomForestRegressor(n_estimators 100, random_state 42) meta_model.fit(stacked_pred, y_test)这里把随机森林和AdaBoost的预测结果整合起来再训练一个随机森林作为元模型。# 模型评估 mse mean_squared_error(y_test, meta_model.predict(stacked_pred)) rmse np.sqrt(mse) mae mean_absolute_error(y_test, meta_model.predict(stacked_pred)) r2 r2_score(y_test, meta_model.predict(stacked_pred)) print(fMean Squared Error: {mse}) print(fRoot Mean Squared Error: {rmse}) print(fMean Absolute Error: {mae}) print(fR - squared: {r2})程序自动用均方误差 (MSE)、均方根误差 (RMSE)、平均绝对误差 (MAE)、拟合优度 (R - squared) 对模型评估然后打印结果。# 绘制yx散点图 plt.scatter(y_test, meta_model.predict(stacked_pred)) plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], k--, lw 2) plt.xlabel(True Values) plt.ylabel(Predicted Values) plt.title(Scatter Plot of True vs Predicted Values) plt.show()通过绘制y x散点图能更直观地看到预测值和真实值的关系方便在论文里展示。# 读取未来预测数据 future_data pd.read_excel(future_prediction_file.xlsx) future_X future_data rf_future_pred rf.predict(future_X) ada_future_pred ada.predict(future_X) stacked_future_pred np.column_stack((rf_future_pred, ada_future_pred)) future_pred meta_model.predict(stacked_future_pred)读取第二个Excel文件做未来预测经过一系列模型预测得到最终的未来预测值。# 输出结果 test_pred_df pd.DataFrame({True Values: y_test, Predicted Values: meta_model.predict(stacked_pred)}) test_pred_df.to_excel(test_prediction.xlsx, index False) future_pred_df pd.DataFrame({Future Predicted Values: future_pred}) future_pred_df.to_excel(future_prediction.xlsx, index False)最后输出两个Excel文件一个是测试集的预测值一个是未来预测值。整个程序使用起来超简单只要更新两个Excel文件程序就能跑起来。无论是做研究发文章还是搭建要素预测平台它都能轻松胜任是不是超厉害赶紧动手试试吧。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2479555.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!