文档介绍:机器学****算法day04_决策树分类算法及应用
课程大纲
决策树分类算法原理
决策树算法概述 决策树算法思想 决策树构造
算法要点
决策树分类算法案例
案例需求
Python实现
决策树的持久化保存
课程目标:
1、 树2先选A1作划分,各子节点信息熵计算如下:
0, 2子节点有1个正例,1个负例。信息熵为:e1 = -(1/2 * log(1/2) + 1/2 * log(1/2)) = 1。
1, 3子节点有1个正例,1个负例。信息熵为:e2 = -(1/2 * log(1/2) + 1/2 * log(1/2)) = 1。
因此选择A1划分后的信息熵为每个子节点的信息熵所占比重的加权和:E = e1*2/4 + e2*2/4 = 1。也就是说分了跟没分一样!
选择A1做划分的信息熵增益G(S, A1)=S - E = 1 - 1 = 0.
因此,每次划分之前,我们只需要计算出信息熵增益最大的那种划分即可。
算法要点
、指导思想
经过决策属性的划分后,数据的无序度越来越低,也就是信息熵越来越小
算法实现
梳理出数据中的属性 比较按照某特定属性划分后的数据的信息熵增益,选择信息熵增益最大的那个属性作为第一 划分依据,然后继续选择第二属性,以此类推
2. 决策树分类算法 Python 实战
案例需求
我们的任务就是训练一个决策树分类器,输入身高和体重,分类器能给出这个人是胖子还是 瘦子。
所用的训练数据如下,这个数据一共有10个样本,每个样本有2 个属性,分别为身高和体 重,第三列为类别标签,表示“胖”或“瘦”。。
50 thin
60 fat
40 thin
60 fat
60 thin
80 fat
60 thin
90 fat
70 thin
80 fat
模型分析
决策树对于“是非”的二值逻辑的分枝相当自然。而在本数据集中,身高与体重是连续值怎 么办呢?
虽然麻烦一点,不过这也不是问题,只需要找到将这些连续值划分为不同区间的中间点,就 转换成了二值逻辑问题。
本例决策树的任务是找到身高、体重中的一些临界值,按照大于或者小于这些临界值的逻辑 将其样本两两分类,自顶向下构建决策树。
python 实现
使用python的机器学****库,实现起来相当简单和优雅
# -*- coding: utf-8 -*- import numpy as np import scipy as sp from sklearn import tree from import precision_recall_curve from import classification_report from import train_test_split
'''数据读入''' data  =[] labels =[] with open("d:\\python\\ml\\data\\") as ifile: for line in ifile:
tokens = ().split(''