决策树
决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。
由于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。Entropy = 系统的凌乱程度,使用算法ID3, C4.5和C5.0生成树算法使用熵。
公式
当然也有推荐以2为底的对数
求两点分布的信息熵
import?numpy?as?np import?matplotlib.pyplot?as?plt p?=?np.linspace(0.0000001,1,100) h?=?-(1-p)*np.log(1-p)?-?p*np.log(p)??#?公式 plt.plot(p,h) plt.show()
图像如下:
在这里插入图片描述
即如果概率都是0.5的信息熵最大,举个例子如果两个球队的获胜概率都是0.5,那么会有更多的人去观看,带来的信息冲量也是最大的。也就是如果比赛激烈那些引起的信息流量也是非常庞大的。
Gini系数(基尼系数)Gini系数是一种与信息熵类似的做特征选择的方式,可以用来数据的不纯度。
决策树如何可视化
先处理一个问题,如何将一个决策树可视化
安装好Graphviz因为要使用sklearn自带的 export_graphviz
网址:http://HdhCmsTestgraphviz.org/
设置环境变量cmd执行命令
pip?install?pydotplus
如何绘画
这里使用的是export_graphviz
import??numpy?as?np from?sklearn.tree?import?DecisionTreeClassifier from?matplotlib?import?pyplot?as?plt import?pydotplus from?sklearn?import?tree X?=?np.array([[2,?2], ??????????????[2,?1], ??????????????[2,?3], ??????????????[1,?2], ??????????????[1,?1], ??????????????[3,?3]]) y?=?np.array([0,?1,?1,?1,?0,?0]) plt.style.use('fivethirtyeight') plt.rcParams['font.size']?=?18 plt.figure(figsize=(8,?8)) #?Plot?each?point?as?the?label for?x1,?x2,?label?in?zip(X[:,?0],?X[:,?1],?y): ????plt.text(x1,?x2,?str(label),?fontsize=40,?color='g', ?????????????ha='center',?va='center') plt.grid(None) plt.xlim((0,?3.5)) plt.ylim((0,?3.5)) plt.xlabel('x1',?size=20) plt.ylabel('x2',?size=20) plt.title('Data',?size=24) plt.show() dec_tree?=?DecisionTreeClassifier() print(dec_tree) dec_tree.fit(X,?y) print(dec_tree.score(X,y)) #?export_graphviz dot_data?=?tree.export_graphviz(dec_tree,?out_file=None, ????????????????????????????????feature_names=['x1',?'x2'], ????????????????????????????????class_names=['0',?'1'], ????????????????????????????????filled=True,?rounded=True, ????????????????????????????????special_characters=True) graph?=?pydotplus.graph_from_dot_data(dot_data) #?绘制图片 with?open('demo.png',?'wb')?as?f: ????f.write(graph.create_png()) #?绘制pdf graph.write_pdf('demo.pdf')
pdf和图片一样
具体说下这个决策树
一开始 x1<2.5是判断条件,gini=0.5,就是1-0.5 2-0.5 2 = 0.5,说明x1 = x2 ,只有[1,1],[3,3],x1<=2.5,选反的即x1>2.5 ,,决策树先value选[3,3},现在有6个样本。如果x1<=2.5,而且x2>2.5,将[2,3]选出。去掉[3,3] 5个,False是决策树的预测,因为Gini=0或1,它必须做出预测,样本中没有[1,0],它预测为0的分类。每做一次判断,就会做一个预测Gini=0的情况,将它分类,下次遇到[1,0]就将它分为0.
一直原创,从未转载
请认准我, 将我置标
转发,好看支持一下,感谢