XGBRegressor参数详解:

import xgboost as xgb
from xgboost import plot_importance
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_boston
from sklearn.metrics import mean_squared_error

# 导入数据集
boston = load_boston()
X ,y = boston.data,boston.target
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=0)

model = xgb.XGBRegressor(max_depth=3,          # 每一棵树最大深度,默认6;
                        learning_rate=0.1,      # 学习率,每棵树的预测结果都要乘以这个学习率,默认0.3;
                        n_estimators=100,        # 使用多少棵树来拟合,也可以理解为多少次迭代。默认100;
                        objective='reg:linear',   # 此默认参数与 XGBClassifier 不同
                        booster='gbtree',         # 有两种模型可以选择gbtree和gblinear。gbtree使用基于树的模型进行提升计算,gblinear使用线性模型进行提升计算。默认为gbtree
                        gamma=0,                 # 叶节点上进行进一步分裂所需的最小"损失减少"。默认0;
                        min_child_weight=1,      # 可以理解为叶子节点最小样本数,默认1;
                        subsample=1,              # 训练集抽样比例,每次拟合一棵树之前,都会进行该抽样步骤。默认1,取值范围(0, 1]
                        colsample_bytree=1,       # 每次拟合一棵树之前,决定使用多少个特征,参数默认1,取值范围(0, 1]。
                        reg_alpha=0,             # 默认为0,控制模型复杂程度的权重值的 L1 正则项参数,参数值越大,模型越不容易过拟合。
                        reg_lambda=1,            # 默认为1,控制模型复杂度的权重值的L2正则化项参数,参数越大,模型越不容易过拟合。
                        random_state=0)           # 随机种子
model.fit(X_train,y_train, eval_set=[(X_train, y_train), (X_test, y_test)], eval_metric='rmse', verbose=50)

# 对测试集进行预测
ans = model.predict(X_test)
mse = mean_squared_error(y_test,ans)
print('mse:', mse)

# 显示重要特征
plot_importance(model)
plt.show()

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐