决策树算法广泛应用于:语音识别、医疗诊断、客户关系管理、模式识别、专家系统等,在实际工作中,必须根据数据类型的特点及数据集的大小,选择合适的算法。
本文选择经典案例——《鸢尾花分类》
一、决策树定义
决策树算法是一种基于实例的自上而下的算法,常用于分类与预测。利用树型结构二分类,问题主要集中在剪枝与训练样本。
决策树思维是一种逻辑思考方式,逐层的设定条件对事物进行刷选判断,每一次刷选判断都是一次决策,最终得到达到目的;整个思考过程,其逻辑结构类似分叉的树状,因此称为决策树思维;
决策树森林由几种决策树的预测组合成一个最终的预测,为应用集成思想提高决策树的准确率。
例:公式招聘时的决策树思维
此过程形成了一个树的结构,树的叶子(录用 / 考察)节点位置是做出的决定,也可以理解为是对输出(也就是应聘者的信息)的分类:录用、考察——这样的逻辑思考的过程就叫决策树。
二、决策树分类的基本流程
2.1基本算法流程
2.2特征选择与算法选择
首先要考虑哪个变量是树根,哪个是树节点,为此,我们需要考虑变量的重要性。
怎么衡量?,或者说怎样选择?有三种算法:
- ID3算法 :使用信息增益(作为不纯度)——适合大规模数据处理
- C4.5算法 :使用信息增益率(作为不纯度)——适合大规模数据处理(相较于ID3算法更好,但是计算资源占用大)
- CART 算法:使用基尼系数(作为不纯度)——适合小样本数据处理
不同的方法形成不同的决策树,决策树方法会把每个特征都试一遍,最后选取能够使分类分的最好的特征(e.g. 将A属性作为父节点,产生的纯度增益(GainA)要大于B属性作为父节点,则A作为优先选取的属性)。
2.3划分选择与剪枝
三、案例分析
基于决策树对鸢尾花分类
#基于决策树的鸢尾花分类
'''
- 描述:“代码实操”以及内容延伸部分源代码
- 时间:2019-07-24
- 作者:欧XX(Alan Ou)
- 程序开发环境:win10 64位
- Python版本:64位 3.7
- 依赖库:numpy、pandas、sklearn、matplotlib
- 程序输入:iris.cvs
- 程序输出:iris_classification_result.xlsx
# -*- coding: utf-8 -*-
'''
导入模块
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn import tree
读取数据
iris = load_iris()
iris_feature = iris.data #特征数据
iris_target = iris.target #分类数据
#鸢尾花数组长度为150,共3种类别。
#种类为:Iris Setosa(山鸢花)、Iris Versicolour(杂色鸢尾)Iris Virginica(维吉尼亚鸢尾),分别用0、1、2标签代表
print (iris.data) #输出数据集
print ('-----------------------------')
print (iris.target) #输出真实标签
print (len(iris.target) )
print ('-----------------------------')
print (iris