2017.02.22回顾

20 篇文章 0 订阅

1、昨天不服气,还是继续研究怎么把决策树的结构输出出来,因为有一个包,没装好,在anaconda环境中,我用了这样一个命令进行安装,conda install -c conda-forge pydotplus,成功安装,安装过程中有几个conda的相关东西需要安装或是update(确切的说,好像是conda-forge),其实我不清楚这个命令的意思,反正用pip install pydotplus会报一个编码错误!conda forge -c conda-forge 是指定渠道从conda-forge下载,普通的conda install命令不会搜索conda-forge这个源,听说可以通过conda config --add channels conda-forge添加,然后直接用conda install XXX安装!

2、解决了安装的问题,接下来,我照着http://www.cnblogs.com/pinard/p/6056319.html的三种方法,我第一种成功了,第二种没能成功,sklearn中的tree类提供了一个export_graphviz的方法,可以把树结构导出成dot文件,我后来找到另一种写法,经试验是可以的

from sklearn.externals.six import StringIO
dot_data = StringIO()
tree.export_graphviz(clf, out_file=dot_data)
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_png("tree_%d.png" % i)

这个方法是可以的,write_png和write_pdf两个方法可用,这里我要输出gbdt的每一棵树,这个dot_data = StringIO()是包在循环体内部的,每次要新生成一个!我对这段代码还不是很明白。从方法名上来看,是把树结构输出的一个字符流,然后把字符流转换成图像类,图像类写入成png,StringIO相当于是内存中的文件流,第三种方式我暂时没尝试,目前还用不到,参考http://m.blog.csdn.net/article/details?id=51163535

3、接下来就一个循环输出了我gbdt模型中的60棵树,每棵树存在gbdt.estimators_中,我观察了下60棵树,总体来说很make sense,和业务理解相当,有些变量不相当的,本身在总体上也不make sense,也些变量在交叉作用下,也有和普通理解相反的地方,当然有些从某个角度也能找到解释,比如对于同盾分高的,多头申请次数高的反而好,也就是说对于这种人对于同盾分高但是原因不是来自于多头的,这种其他风险因素很significant

4、下午一直在思考关于每棵树的贡献问题,还来反而开始怀疑是如何累加的了?


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值