决策树分类算法也是一种有监督的分类算法,输入同样为样本特征值向量,以及对应的类标签,输出则为具有分类功能的模型,能够根据输入的特征值预测分类结果:
有监督学习的分类问题
输入:
X:样本的多种特征信息值
y:对应的结果数值
输出:预测模型,为线性函数
模型用法:输入的待预测向量X,输出预测结果向量y
具体步骤
1. 选定纯度度量指标
2. 选定纯度度量指标,一次计算依据数据集中先有的各个特征得到的纯度,选取纯度能达到最大的那个特征作为该次的“条件判断”
3. 利用该特征作为“条件判断”切分数据集,同时将该特征从切分后的子集中剔除(也即不能再用该特征切分子集了)。
4. 重复第二、第三步,直到再没有特征,或切分后的数据集均为同一类
在Python中实现
Scikit-Learn库中,决策树的算法模型相关类库都在sklearn.tree包中。tree包中提供了7个类,其中有4个是决策树算法,另外3个是导出和绘制决策树,4种又分为两类,分别用于解决分类问题和回归问题
4个决策树算法中都有个参数"criterion",给这个参数传入字符串"gini",将使用基尼指数;传入字符串"entropy",则使用信息增益。默认使用基尼指数。
DecisionTreeClassifier类 经典的决策树分类算法
DecisionTreeRegressor类 用决策树算法解决返回归问题
ExtraTreeClassifier类 一款决策树分类算法,在决策条件选择环节加入了随机性,不是从全部特征维度集中选取,而是首先随机抽取n个特征维度来构成新的集合,然后再在新集合中选取决策条件。通过"max_features"设置n的值。
ExtraTreeRegressor类 与ExtraTreeClassifier类似,同样在决策条件选择环境加入随机性,用于解决回归问题
通过DecisionTreeClassifier类调用决策树分类算法:
from sklearn.datasets import load_iris
# 从Scikit-Learn库导入决策树模型中的决策树分类算法
from sklearn.tree import DecisionTreeClassifier
# 载入鸢尾花数据集
X, y = load_iris(return_X_y=True)
# 训练模型
clf = DecisionTreeClassifier().fit(X, y)
# 使用模型进行分类预测
clf.predict(X)
# 使用性能评估器评分
clf.score(X, y)