上篇文章介绍了决策树算法的理论篇,本节来介绍如何用决策树解决实际问题。
决策树是常用的机器学习算法之一,决策树模型的决策过程非常类似人类做判断的过程,比较好理解。
决策树可用于很多场景,比如金融风险评估,房屋价格评估,医疗辅助诊断等。
要使用决策树算法,我们先来介绍一下 scikit-learn 。
1,scikit-learn
scikit-learn 是基于Python 的一个机器学习库,简称为sklearn,其中实现了很多机器学习算法。我们可以通过sklearn 官方手册 来学习如何使用它。
sklearn 自带数据集
要进行数据挖掘,首先得有数据。sklearn 库的datasets 模块中自带了一些数据集,可以方便我们使用。
sklearn 自带数据集:
鸢尾花数据集:load_iris()
乳腺癌数据集:load_breast_cancer()
手写数字数据集:load_digits()
糖尿病数据集:load_diabetes()
波士顿房价数据集:load_boston()
体能训练数据集:load_linnerud()
葡萄酒产地数据集:load_wine()
冒号后边是每个数据集对应的函数,可以使用相应的函数来导入数据。
比如我们用如下代码导入鸢尾花数据集:
from sklearn.datasets import load_iris
iris = load_iris()
使用dir(iris) 查看iris 中包含哪些属性:
>>> dir(iris)
['DESCR', 'data', 'feature_names', 'filename', 'frame', 'target', 'target_names']
2,sklearn 中的决策树
sklearn 库的tree 模块实现了两种决策树:
sklearn.tree.DecisionTreeClassifier 类:分类树的实现。
sklearn.tree.DecisionTreeRegressor 类:回归树的实现。
分类树用于预测离散型数值,回归树用于预测连续性数值。
sklearn 只实现了预剪枝,没有实现后剪枝。
DecisionTreeClassifier 类的构造函数
def __init__(self, *,
criterion="gini",
splitter="best",
max_depth=None,
min_samples_split=2,
min_samples_leaf=1,
min_weight_fraction_leaf=0.,
max_features=None,
random_state=None,
max_leaf_nodes=None,
min_impurity_decrease=0.,
min_impurity_split=None,
class_weight=None,
ccp_alpha=0.0):
DecisionTreeClassifier 类的构造函数中的criterion 参数有2 个取值:
entropy:表示使用 ID3 算法(信息增益)构造决策树。
gini:表示使用CART 算法(基尼系数)构造决策树,为默认值。
其它参数可使用默认值。
sklearn 库中的决策分类树只实现了ID3 算法和CART 算法。
DecisionTreeRegressor 类的构造函数
def __init__(self, *,
criterion="mse",
splitter="best",
max_depth=None,
min_samples_split=2,
min_samples_leaf=1,
min_weight_fraction_leaf=0.,
max_features=None,
random_state=None,
max_leaf_nodes=None,
min_impurity_decrease=0.,
min_impurity_split=None,
ccp_alpha=0.0):
DecisionTreeRegressor 类的构造函数中的criterion 参数有4 个取值:
mse:表示均方误差算法,为默认值。