美文网首页
(2)决策树算法及其应用

(2)决策树算法及其应用

作者: 我的章鱼小丸子呢 | 来源:发表于2020-08-04 10:55 被阅读0次

P:机器学习中分类和预测算法的评估:

  • 准确率
  • 速度
  • 强壮性
  • 可规模性
  • 可解释性

1、什么是决策树/判定树(decision tree)

判定树是一个类似于流程图的树结构:其中,每个内部结点表示一个属性上的测试,每个分支代表一个属性输出,而每个树叶节点代表类或类分布。树的最顶层是根节点。


决策树

2、如何创建决策树

2.1、熵的概念

一条信息的信息量大小和它的不确定性有直接的关系,信息量的度量就等于不确定性的多少。信息量的计算公式如下所示:
** 变量的不确定性越大,熵越大 **


信息量

2.2、决策时归纳算法

选择属性判断结点
信息获取量(Information Gain):Gain(A)= Info(D) - Infor_A(D)通过A作为节点分类获取了多少信息。
实例,以下是对是否购买计算机的群体的一项数据调查:


调查

已知从结果上来看的信息量是:


信息量
当知道年龄分布后的结果信息量:
信息量
依次类推,分别可以求得在其他条件已知的情况下的信息量
信息量

依次类推,当将age作为第一个结点之后,会得到新生成的三个结点,然后再次重复计算,将三个结点按照决策树原理再次进行分类,知道分类结果唯一。


决策树

2.2分类停止的条件:

  • 1.给定条件的结点所有样本属于同一样类
  • 2.找不到可以分类该结点的属性

2.3算法

算法步骤
其它算法

3.决策树的优点与缺点

优点:
直观 便于理解 小规模数据集有效
缺点:
处理连续性变量不好 错误增加的比较快 不适用于大规模数据集

4、代码实现

4.1、Python

4.2、python机器学习的库:scikit-learn

4.2.1:特性

  • 简单高效的数据挖掘和机器学习分析
  • 对所有用户开放,根据不同需求高度可重用性
  • 基于Numpy,SciPy和matplotlib
  • 开源,商用级别;获得BSD许可

4.2.2:覆盖问题领域

分类(classfication)、回归(regression)、聚类(clustering),降维(dimensionality)
模型选择(model selection)、预处理(preprocessing)

4.3:使用scikit-learn

  • 安装scikit-learn:pip,easy_install,windows installer
  • 安装必要package:numpy,SciPy和matplotlib,可使用Anaconda(包含numpy,scipy等科学计算常用package)
    安装注意问题:Python解释器版本(2.7or3.4-),32-bit or 64-bit系统。

4.4、代码

#决策时的应用算法
"""
scikit-learn 强大的机器学习库 达到商用级别
对数据输入的要求 
对所有的特征值必须是数值型
"""
# print("hello world")
from sklearn.feature_extraction import DictVectorizer
import csv
from sklearn import preprocessing #需要使用到预处理
from sklearn import tree #需要使用到树
from sklearn.externals.six import StringIO #读写功能

all_csv_data = open(r'C:\Users\25478\Desktop\Python\DT.csv','rt')  #读取表格数据
reader = csv.reader(all_csv_data) #利用模块中的reader函数读取出来
header = next(reader)   #取第一行
# print(header)

feature_list = []
label_list = []

for row in reader:
    label_list.append(row[len(row)-1])
    #print(row)
    row_dict = {}
    for i in range(1,len(row)-1):
        row_dict[header[i]] = row[i]
    feature_list.append(row_dict)
#print(feature_list)

vec = DictVectorizer()
dummyX = vec.fit_transform(feature_list).toarray()
# print("dummyX:\n" + str (dummyX)) #在特征值上将字符型的转化为数值
# print(vec.get_feature_names())

lb = preprocessing.LabelBinarizer() #在标签上进行二进制化
dummyY = lb.fit_transform(label_list)
# print("dummyY:\n" + str(dummyY))

clf = tree.DecisionTreeClassifier(criterion = 'entropy')
clf = clf.fit(dummyX,dummyY)
# print("clf=:"+str(clf))

with open("dt.dot",'w') as f:
    f = tree.export_graphviz(clf,feature_names=vec.get_feature_names(),out_file= f)

OneRowX = dummyX[0,:]
print("OneRowX:\n"+str(OneRowX))
newRowX = OneRowX
newRowX[0] = 1
newRowX[1] = 0
print("NewRowX:\n"+str(newRowX))

predY = clf.predict(newRowX)
print("predY:"+str(predY))

使用的数据文件


数据

得到的dot文件


决策树dot文件

5、将dot文件转至pdf-可视化决策树

使用graphviz将dot文件转为png,pdf

#转为png图片
dot -Tpng dtc.dot -o dtc.png

#转为pdf文件
dot -Tpdf dtc.dot -o dtc.pdf

相关文章

  • (2)决策树算法及其应用

    P:机器学习中分类和预测算法的评估: 准确率 速度 强壮性 可规模性 可解释性 1、什么是决策树/判定树(deci...

  • 2018-05-14

    机器学习算法优缺点及其应用领域 决策树 一、 决策树优点 1、决策树易于理解和解释,可以可视化分析,容易提取出规则...

  • 常用机器学习算法优缺点及其应用领域

    机器学习算法优缺点及其应用领域 决策树 一、 决策树优点 1、决策树易于理解和解释,可以可视化分析,容易提取出规...

  • ID3和C4.5决策树算法总结及其ID3Python实现

    ID3和C4.5决策树算法总结及其ID3Python实现 1.决策树的算法流程 决策树的算法流程主要是:1.如果当...

  • 搜索与回溯算法模板及其应用

    本文介绍了搜索与回溯算法模板及其应用,主要包括: 【1】 搜索与回溯算法基本思想【2】模板算法1及其应用(素数环问...

  • 数据分析方法-决策树

    大家好,这篇文章我们探讨下,决策树算法的相关的知识,决策树是一种分类算法,现在也可以应用与回归,决策树算法的实现有...

  • 理论-决策树

    ID3算法Building Decision Trees in Python如何实现并应用决策树算法?

  • ID3算法实现决策树

    1.ID.3算法 1.1算法原理: 算法的核心是在决策树各个节点上,应用信息增益准则选择特征,递归的构建决策树。算...

  • 「数据分类」13决策树分类之ID3算法和C4.5算法

    1.决策树 决策树是应用广泛的一种归纳推理算法。在分类问题中,决策树算法基于特征对样本进行分类,构成一棵包含一系列...

  • 数挖——基本分类

    构造决策树有多种算法:1、Hunt算法 (决策树归纳算法框架)2、CART3、ID3, C4.5 (重点)4、SL...

网友评论

      本文标题:(2)决策树算法及其应用

      本文链接:https://www.haomeiwen.com/subject/rrwirktx.html