import numpy as np
import matplotlib.pyplot as plt
from xgboost import XGBRegressor
#pip install xgboost -i https://pypi.tuna.tsinghua.edu.cn/simple
import pandas as pd
import joblib
#处理中文字体
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus']=False
#读取数据
csv_data = pd.read_csv('dataset.csv')
datas = csv_data.values #转换为numpy
train_num=240 #前240行为训练集
Xtrain = datas[:train_num, 1:10] #训练集X
Ytrain = datas[:train_num, 0:1] #训练集Y
Xtest = datas[train_num:, 1:10] #测试集x
Ytest = datas[train_num:, 0:1] #测试集Y
#XGBoost模型
XGB = XGBRegressor()
model =XGB.fit(Xtrain, Ytrain) #训练模型
Ytrainpred=XGB.predict(Xtrain) #训练集预测值
Ytestpred=XGB.predict(Xtest) #测试集预测值
joblib.dump(model, "model.pkl") #保存模型
XGBmodel=joblib.load('model.pkl')# 加载模型
# 训练集
plt.figure(1)
plt.plot(Ytrain, c='b', label='实际值',marker="*")
plt.plot(Ytrainpred, c='k', label='测试值',marker="o")
plt.legend()
plt.title("训练集对比")
plt.show()
# 测试集
plt.figure(2)
plt.plot(Ytest, c='b', label='实际值',marker="*")
plt.plot(Ytestpred, c='k', label='测试值',marker="o")
plt.legend()
plt.title("测试集对比")
plt.show()
XGBOOST回归预测
需积分: 0 132 浏览量
更新于2023-04-10
3
收藏 79KB RAR 举报
**XGBoost回归预测详解**
XGBoost,全称为Extreme Gradient Boosting,是一种高效、灵活且可扩展的梯度提升框架,尤其适用于回归预测任务。它由陈天奇博士在2016年提出,迅速成为了机器学习领域广泛应用的工具,尤其是在数据科学竞赛中取得了显著的成绩。
### 一、梯度提升基础
梯度提升是一种迭代的决策树学习算法,通过不断构建弱预测器(通常是决策树)并组合它们来形成一个强预测器。每个新模型都致力于修正前一个模型的残差误差,从而逐步提高整体预测精度。在XGBoost中,这个过程被优化得更为高效。
### 二、XGBoost的主要特点
1. **优化算法**:XGBoost采用了一种称为加性梯度提升(Additive Gradient Boosting)的策略,每次迭代时优化目标函数,同时考虑了模型的复杂性和预测误差,以找到最佳的弱学习器。
2. **二阶泰勒展开**:为了快速计算损失函数的梯度和Hessian(二阶导数),XGBoost使用了二阶泰勒展开。这使得模型训练更高效,同时保留了梯度提升的准确性。
3. **并行化处理**:XGBoost支持分布式计算,可以将任务拆分到多个计算节点上,极大地提升了训练速度,适应大数据场景。
4. **正则化**:XGBoost引入了L1和L2正则化,限制了模型的复杂度,防止过拟合,提高了模型的泛化能力。
5. **自定义损失函数**:用户可以根据具体问题自定义损失函数,使得XGBoost可以应用于各种类型的预测任务。
### 三、XGBoost模型训练
1. **数据预处理**:在开始训练之前,需要对数据进行适当的预处理,包括缺失值处理、特征缩放和编码等。
2. **构建弱学习器**:XGBoost使用决策树作为弱学习器,可以通过调整参数如树的深度、叶子节点数、学习率等控制模型复杂度。
3. **损失函数优化**:通过梯度提升迭代,每轮迭代都会找到最能减少当前损失函数的决策树,并添加到模型中。
4. **早停策略**:为了防止过拟合,XGBoost允许设置早停条件,当验证集上的损失不再明显降低时,提前结束训练。
### 四、XGBoost的应用
XGBoost广泛应用于各种回归预测问题,如房价预测、销售预测、用户行为预测等。其强大的预测能力和高效的计算性能使其成为数据科学家的首选工具。
### 五、实例解析
在04XGBOOST文件中,可能包含了使用XGBoost进行回归预测的具体案例。通常,这会涉及到以下步骤:
1. 加载数据。
2. 数据预处理,包括缺失值填充、异常值处理、特征工程等。
3. 划分训练集和测试集。
4. 初始化XGBoost模型,设置参数,如n_estimators(树的数量)、max_depth(树的最大深度)、learning_rate(学习率)等。
5. 训练模型并进行交叉验证。
6. 使用训练好的模型进行预测。
7. 评估模型性能,比如使用均方误差(MSE)、R^2分数等指标。
XGBoost是机器学习中非常重要的回归预测工具,其高效、灵活的特性使得它在实际应用中表现出色。通过深入理解其工作原理和应用场景,我们可以更好地利用XGBoost解决各类回归预测问题。
nicepod
- 粉丝: 9
- 资源: 8
最新资源
- CS-TY4-4WCN-转-公版-XP1-8B4WF-wifi8188
- 从零学习自动驾驶Lattice规划算法(下) 轨迹采样 轨迹评估 碰撞检测 包含matlab代码实现和cpp代码实现,方便对照学习 cpp代码用vs2019编译 依赖qt5.15做可视化 更新:
- 风光储、风光储并网直流微电网simulink仿真模型 系统由光伏发电系统、风力发电系统、混合储能系统(可单独储能系统)、逆变器VSR+大电网构成 光伏系统采用扰动观察法实现mppt控
- (180014016)pycairo-1.18.2-cp35-cp35m-win32.whl.rar
- (180014046)pycairo-1.21.0-cp311-cp311-win32.whl.rar
- DS-7808-HS-HF / DS-7808-HW-E1
- (180014004)pycairo-1.20.0-cp36-cp36m-win32.whl.rar
- (178330212)基于Springboot+VUE的校园图书管理系统
- (402216)人脸识别
- enspOSPF多区域路由配置