N~B轰轰的导包
from sklearn.tree import DecisionTreeRegressor #回归
from sklearn.tree import DecisionTreeClassifier #分类
实现的算法基础
-
ID3的优缺点:
优点: 原理简单.
缺点: 1. 存在大量对数运算, 对计算机不太友好. 2. 会存在优先对比较离散的特征进行划分的毛病,容易造成误差. -
C4.5算法: 是对ID3的改进算法. 改进了缺点中的第二点.
C4.5在ID3计算信息增益的基础上除上特征本身的信息熵, 变成信息增益率. -
CART : 分类和回归树
-
CART: Classification and Regression Tree 分类和回归树
计算基尼不纯度: gini impurity
基尼系数和信息熵表达的含义相似: 越大代表不确定性越大, 越小越确定. 但是范围是在0到1之间.
ID3和C4.5只能做分类问题. CART可以做回归树.CART的树是二叉树,
api
api
- class sklearn.tree.DecisionTreeClassifier(criterion=‘gini’, max_depth=None,random_state=None)
决策树分类器
criterion:默认是’gini’系数,也可以选择信息增益的熵’entropy’
max_depth:数的深度大小
random_state:随机数种子
method:
decision_path:返回决策树的路径 - 决策树的八个参数:Criterion,两个随机性相关的参数(random_state,splitter),五个剪枝参数(max_depth,min_samples_split,min_samples_leaf,max_feature,min_impurity_decrease)
- 一个属性:feature_importances_
- 四个接口:fit,score,apply,predict。
- apply中输入测试集返回每个测试样本所在的叶子节点的索引,predict输入测试集返回每个测试样本的标签。返回的内容一目了然。
决策树的结构,本地保存
-
1.tree.export_graphviz() 改函数能够导出DOT格式(二进制)
estimator = DecisionTreeClassifier()
tree.export_graphviz(estimator,out_file=‘tree.dot’,feature_names=[“年龄”,“性别”,“爱好”,…])
estimator:估计器
out_file:文件路径名字
feature_names:划分树的名字 -
2.工具:(能够将dot文件转换为pdf,png)
安装 graphviz
ubuntu:sudo apt-get install graphviz -
3.运行命令
dot -Tpng tree.dot -o tree.png
决策树优缺点以及改进
-
优点:
简单的理解和解释,树木可视化
需要很少的数据准备,其他技术通常需要数据归一化 计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。既能用于分类,也能用于回归
-
缺点:
决策树学习者可以创建不能很好地推广数据过于复杂的数
这被称为过拟合 -
改进:
减枝cart算法(决策树API 当中已经实现,随机森林参数调优有关介绍)
随机森林
注意:企业重要决策,由于决策树很好的分析能力,在决策过程应用较多