决策树预测概率,决策树模型的假设

  决策树预测概率,决策树模型的假设

  本文主要介绍决策树的过程:

  

目录

  1.决策图表

  2.决策树的构造。

  2.1信息熵

  2.2节点构造

  2.3决策树的优缺点

  3.决策树的程序实现。

  3.1 Python编码实现

  3.2产出

  1.决策树

决策树

一般是自顶向下生成的。每个决策事件可能导致两个或更多事件,从而导致不同的结果。把这个决策分支画成图,和树的分支很像,所以叫决策树。

  

基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子节点处熵值为0(叶节点中的实例都属于一类)。

  

2.决策树的构建

2.1信息熵

在构建决策树的过程中,我们需要一个度量标准来确定每个数据分区带来的收益。这个标准就是信息熵。以0-1二分类问题为例,衡量节点信息熵的公式如下:

  

信息熵越大代表信息越抽象,决策树中节点信息熵规则为:Entropy(parent)Entropy(son)Entropy(grandson) ...... 0

  

2.2节点构建

编造了一批具体构造决策树的数据集:

  决策树构建节点常用ID3归纳算法,信息获取过程为:Gain(A)=Info(D)-Info_A(D)

  用购买结果作为分类,看看获得了多少信息。

  因此,Gain=Info(D)-Info _ age(D)=0.94-0.69=0.25 bits。

  同样,可以计算出Gain(收入)=0.03,Gain(是否学生)=0.15,Gain(学分)=0.05。

  ID算法得出结论,选择年龄作为归纳树的父节点。

  父节点的拆分结果是:

  如果购买结果为否,可以重复上述操作过程,完成完整决策树的构建。

  2.3决策树

决策树的优点:

的优缺点直观、易懂,对小规模数据集有效;

  

决策树的缺点:

当连续变量处理不好,类别较多时,误差增加较快。

  3.决策树的程序实现。3.1 Python编码实现决策树用sklearn实现,代码如下:

  从sklearn.feature_extraction导入字典矢量导入csv从sklearn导入树从sklearn导入预处理从sklearn.externals.six导入StringIO#读入csv文件并将特征放入字典列表和类列表labelelectronicsdata=open(r train _ set . path , rt )reader=CSV . reader(allElectronicsData)headers=next(reader)print(headers)feature list=[]label list=[]for reader中的行:labelList.append(row[len(rowtoarray()print( dummyX: str(dummyX))print(vec . get _ feature _ names())print( label list: str(label list))#矢量化类labelslb=预处理。label binarizer()dummy=lb . fit _ transform(label list)print( dummy: str(dummy))#使用决策树进行分类# clf=tree。decision tree classifier()clf=tree。decision tree classifier(criterion= entropy )clf=clf . fit(dummyX,dummy)print( clf: str(clf))# Visualize model with open( dtree . dot , w )as f:f=tree . export _ graphviz(clf,feature _ names=vec . get _ feature _ names(),out_file=f)oneRowX=dummyX[0,]print( oneRowX: str(oneRowX))new rowx=oneRowX new rowx[0]=1 new rowx

决策树预测概率,决策树模型的假设