Python实现:
上一篇博客已经介绍了使用GBDT提取特征的思想,参考:https://blog.csdn.net/jodie123456/article/details/100630547
但是算法的难点在于如何获得GBDT模型每个叶子节点的输出状况,而这可以通过sklearn包中GradientBoostingRegressor的apply函数实现,其原理如下:
上面为GBDT模型下的两棵树,红色部分为某一样本x经过GBDT模型apply函数后的输出,为一个数组(4,6),但是(4,6)这样的数字是不能直接作为特征作为线性模型的输入的,因为这些数字只是一个位置的信息,并没有量的含义,所以需要用sklearn中的onehot编码(pandas中是dummy数据)将其转化为01码。
参考代码如下:
import numpy as np
import pandas as pd
from sklearn import linear_model
from sklearn.preprocessing import OneHotEncoder
from sklearn.ensemble import GradientBoostingRegressor
gbr=Gra