在kaggle等竞赛中时常可以看到xgb的身影。2016年,陈天奇在论文《 XGBoost:A Scalable Tree Boosting System》中正式提出该算法。XGBoost的基本思想和GBDT相同,但是做了一些优化,比如二阶导数使损失函数更精准;正则项避免树过拟合;Block存储可以并行计算等。XGBoost具有高效、灵活和轻便的特点,在数据挖掘、推荐系统等领域得到广泛的应用。在此简单总结一下常用代码。
假设已经下载好了xgb并准备好了train_x, train_y 与 test_x, test_y
import xgboost as xgb from xgboost import XGBClassifier from matplotlib import pyplot as plt model = XGBClassifier() model.fit(train_x, train_y ) # feature importance print(model.feature_importances_) ''' plot_importance 与 feature_importances 可能会出现不一致 这是因为model.feature_importances_的重要性排名默认使用gain,而xgb.plot_importance默认使用weight。 改一下就一样了 plot_importance(model,importance_type='gain') ''' # plot feature importance plot_importance(model) plt.show() # 预测 y_pred = model.predict(test_x)预测
import xgboost as xgb from xgboost import plot_importance model = xgb.XGBRegressor(max_depth=6, # 可以调节这些参数来改进模型效果 learning_rate=0.12, n_estimators=90, min_child_weight=6, objective="reg:gamma") model.fit(x_train, y_train)特征重要性图像尺寸调整
import xgboost as xgb
from xgboost import plot_importance
from matplotlib import pyplot as plt
fig,ax = plt.subplots(figsize=(10,6))# 调节图像尺寸
plot_importance(model,
height=0.6,# 调节线宽
ax = ax,
max_num_features=64)#调节显示数目
plt.show()



