xgboost回归预测python实例代码
时间: 2023-07-26 17:13:57 浏览: 102
好的,以下是一个简单的 XGBoost 回归预测的 Python 实例代码:
```python
# 导入所需的库
import xgboost as xgb
import numpy as np
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
# 加载波士顿房价数据集
boston = load_boston()
# 将数据集划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=42)
# 定义 XGBoost 回归模型
xgb_model = xgb.XGBRegressor(objective='reg:squarederror', n_estimators=100, max_depth=4, learning_rate=0.1)
# 拟合模型
xgb_model.fit(X_train, y_train)
# 预测测试集
y_pred = xgb_model.predict(X_test)
# 计算模型的评估指标
mse = np.mean((y_test - y_pred)**2)
print('均方误差:', mse)
```
以上代码中,我们使用 XGBoost 回归模型对波士顿房价数据集进行训练和预测,并计算了均方误差作为模型的评估指标。
相关问题
xgboost回归预测python的模板
以下是使用XGBoost进行回归预测的Python模板:
```python
import xgboost as xgb
import pandas as pd
import numpy as np
# 加载数据
train_data = pd.read_csv('train.csv')
test_data = pd.read_csv('test.csv')
# 准备训练集和测试集
y_train = train_data['target']
X_train = train_data.drop(['target'], axis=1)
X_test = test_data
# XGBoost模型参数
params = {
'objective': 'reg:squarederror', # 设定为回归问题
'learning_rate': 0.1, # 学习率
'max_depth': 5, # 树的最大深度
'min_child_weight': 1, # 叶子节点最小实例权重和
'gamma': 0, # 惩罚项中叶子节点个数前的参数
'subsample': 0.8, # 训练集采样率
'colsample_bytree': 0.8, # 列采样率
'scale_pos_weight': 1, # 不平衡数据集时设置正反例比例
'alpha': 0, # L1正则化参数
'lambda': 1 # L2正则化参数
}
# 转化为XGBoost可以处理的数据格式
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test)
# 训练模型
model = xgb.train(params, dtrain, num_boost_round=100)
# 预测结果
y_pred = model.predict(dtest)
# 输出预测结果
print(y_pred)
```
注意,以上模板仅供参考,具体参数设置和数据处理要根据实际情况进行调整。
利用贝叶斯优化器优化XGBoost回归模型的python代码实例
好的,以下是一个利用贝叶斯优化器优化XGBoost回归模型的Python代码实例:
```python
import xgboost as xgb
from sklearn.datasets import load_boston
from sklearn.metrics import mean_squared_error
from bayes_opt import BayesianOptimization
# 加载波士顿房价数据集
boston = load_boston()
X, y = boston.data, boston.target
# 定义XGBoost回归模型的参数空间
params = {
'n_estimators': (50, 1000),
'max_depth': (2, 10),
'learning_rate': (0.01, 0.5),
'subsample': (0.5, 1),
'colsample_bytree': (0.1, 1)
}
# 定义贝叶斯优化器
def xgb_evaluate(n_estimators, max_depth, learning_rate, subsample, colsample_bytree):
# 定义XGBoost回归模型
model = xgb.XGBRegressor(
n_estimators=int(n_estimators),
max_depth=int(max_depth),
learning_rate=learning_rate,
subsample=subsample,
colsample_bytree=colsample_bytree,
objective='reg:squarederror'
)
# 训练模型并预测
model.fit(X, y)
y_pred = model.predict(X)
# 计算均方误差
mse = mean_squared_error(y, y_pred)
# 返回负均方误差
return -mse
# 运行贝叶斯优化器
optimizer = BayesianOptimization(xgb_evaluate, params)
optimizer.maximize(init_points=5, n_iter=25)
# 输出最优参数和最优负均方误差
print(optimizer.max)
```
在上述代码中,我们首先加载了波士顿房价数据集,然后定义了XGBoost回归模型的参数空间。接下来,我们定义了贝叶斯优化器xgb_evaluate()函数,该函数接收5个参数,分别是n_estimators、max_depth、learning_rate、subsample和colsample_bytree,这些参数都是XGBoost回归模型的超参数。在xgb_evaluate()函数中,我们先用这些超参数定义了XGBoost回归模型,然后训练模型并预测,最后计算均方误差,并返回负均方误差,这是因为贝叶斯优化器是在最大化目标函数的值,而我们希望最小化均方误差的值,因此需要返回负均方误差。
最后,我们利用BayesianOptimization类初始化了一个贝叶斯优化器optimizer,并调用其maximize()方法进行优化,其中init_points和n_iter分别表示初始化点和迭代次数。最后,我们输出了最优参数和最优负均方误差。