访问单个树估计器以预测来自梯度提升分类器估计器的值

Posted

技术标签:

【中文标题】访问单个树估计器以预测来自梯度提升分类器估计器的值【英文标题】:Acccesing individual tree estimators to predict values from gradient boosting classfiier estimators 【发布时间】:2018-11-29 07:43:10 【问题描述】:
gbm0 = GradientBoostingClassifier(n_estimators=500, random_state=42)
%time modelfit(gbm0, X_train, y_train)

##model fit is a fucntion i wrote to create a report on gbm classifier

preds = np.stack([t.predict(X_valid) for t in gbm0.estimators_])

报错

  ----> 1 preds = np.stack([t.predict(X_valid) for t in gbm0.estimators_])

 AttributeError: 'numpy.ndarray' object has no attribute 'predict'

如何访问单个树的预测方法来查看预测?

【问题讨论】:

【参考方案1】:

数组estimators_ 的形状为(n_estimators, 1),用于二进制分类。所以你可以通过重塑来修复错误:

preds = np.stack([t.predict(X_valid) for t in gbm0.estimators_.reshape(-1)])

【讨论】:

酷。这也行。 preds = np.stack([t[0].predict(X_valid) for t in gbm0.estimators_])

以上是关于访问单个树估计器以预测来自梯度提升分类器估计器的值的主要内容,如果未能解决你的问题,请参考以下文章

为啥使用 1 个估计器的 adaboost 比简单的决策树更快?

机器学习之路:python 综合分类器 随机森林分类 梯度提升决策树分类 泰坦尼克号幸存者

GBDT

随机森林 - 使用更少的估计器进行预测

GBDT 梯度提升决策树简述

技术分享 | 机器学习-浅谈XGBoost算法