基于决策树的分类预测
1、决策树简介
1.1 决策树
决策树(Decision Tree):决策树是一种树形结构,包含一个根结点和内部若干结点和若干叶子结点。其中叶子结点是我们的决策结果。内部若干节点是我们所给测试集的各种特征属性。从根结点到叶子结点的路径代表了一种输出的判别方法。其流程可以简单概括为“分而治之”。决策树最关键的就是如何选择最优划分属性。
1.2 常见的决策树分类算法
ID3算法:ID3是一种基于信息熵的决策树分类学习算法,利用信息熵的下降速度作为属性选择的度量,以信息增益和信息熵为准则来选择划分属性的决策树学习算法。
C4.5算法:基于ID3算法的改进,主要包括:使用信息增益率替换了信息增益下降度作为属性选择的标准;在决策树构造的同时进行剪枝操作;避免了树的过度拟合情况;可以对不完整属性和连续型数据进行处理。
CART算法:根据基尼(gini)系数来选择测试属性,gini系数的值越小,划分效果越好。CART分类算法的基本思想是:对训练样本集进行递归划分自变量空间,并依次建立决策树模型,然后采用验证数据的方法进行树枝修剪,从而得到一颗符合要求的决策树分类模型。
对上述三种算法感兴趣的可以参照博客决策树算法详细介绍
2、sklearn决策树算法简介
2.1 sklearn.tree.DecisionTreeClassifier()
sklearn.tree.DecisionTreeClassifier()函数:用来构建决策树,默认使用CART算法。
其函数原型为:sklearn.tree.DecisonTreeClassifier(criterion=’gini’,splitter=’best’,max_depth=None,min_samples_split=2,min_samples_leaf=1,min_weight_fraction_leaf=0.0,max_features=None,random_state=None,max_leaf_nodes=None,min_impurity_decrease=0.0,min_impurity_split=None,class_weight=None,presort=False)
criterion:该参数用来表明选择的划分属性的标准是什么,默认情况下是采用基尼系数,CART算法采用基尼系数作为度量的标准。若想采用C4.5算法可以将其设置为"enproty",表示信息增益率。
splitter:该参数是表明结点划分时采用的策略,默认为"best",表民划分策略采用criterion的策略,即选用最优属性来划分。可以设置"random"随机选择策略。
max_depth:该参数表明决策树的最大深度,默认为None表示不对其最大深度作约束,但当样本过大可以选择设置合适的深度提前结束决策树,避免出现过拟合。
其他属性可以参考参数说明
3、实例分析
3.1 Demo实践
3.1.1 完整代码
## 基础函数库
import numpy as np
## 导入画图库
import matplotlib.pyplot as plt
import seaborn as sns
## 导入决策树模型函数
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree
##Demo演示LogisticRegression分类
## 构造数据集
x_fearures = np.array([[-1, -2], [-2, -1