GBDT 如何实现特征组合提取? 10

我说的不是Facebook那个根据分类结果生成线性新特征。最近刚刚接触GBDT和机器学习,想问下关于GBDT,如何把树的分支提取出来,即通过代码找到树的分支,分类节点。或... 我说的不是Facebook那个根据分类结果生成线性新特征。
最近刚刚接触GBDT和机器学习,想问下关于GBDT,如何把树的分支提取出来,即通过代码找到树的分支,分类节点。
或者说如何能够列出那些节点,也就是分类的根据
跪求大神_(:_」∠)_
展开
 我来答
星嘉合科技有限公司
2018-01-17 · 财富点亮生活
星嘉合科技有限公司
启明星是为金融投资爱好者搭建的智能投顾平台,投顾将投资策略展示其上,供广大投资者选择,最终实现变智为金,投资者根据网站展示的策略产品进行产品的择优、择时、择机,实现财富与时间的自由。
向TA提问
展开全部

以Python调用sklearn为例,在你建立GBDT对象并作fit之后,可以使用如下代码获得你要的规则代码:

dot_data = tree.export_graphviz(model_tree, out_file=None,
max_depth=5, feature_names=names_list, filled=True, rounded=True) # 将决策树规则生成dot对象

其中tree就是你的数对象,如果你的out_file后面是一个文件名,那么你的规则会输出到文件中;如果是None(就像上面代码),那么值会保存在dot_data中。

无论哪种方法,你都能获得规则文本。然后剩下的就是普通的文本解析的事情了。

在决策树算法对象的tree_属性中,存储了所有有关决策树规则的信息(示例中的决策树规则存储在model_tree.tree_中)。最主要的几个属性:

  • children_left:子级左侧分类节点

  • children_right:子级右侧分类节点

  • feature:子节点上用来做分裂的特征

  • threshold:子节点上对应特征的分裂阀值

  • values:子节点中包含正例和负例的样本数量

  • 上述属性配合节点ID、节点层级便迭代能得到如下的规则信息:

    1 [label="rfm_score <= 7.8375\ngini = 0.1135\nsamples =
    14581\nvalue = [13700, 881]", fillcolor="#e58139ef"] ;

    其中规则开始的1代表节点ID,rfm_score是变量名称,rfm_score
    <= 7.8375是分裂阀值,gini = 0.1135是在当前规则下的基尼指数,nsamples是当前节点下的总样本量,nvalue为正例和负例的样本数量。

来源:知乎

追问
这和知乎上一样……但是GBDT没有tree这个属性,请问怎么办呢
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式