决策树算法应用
在 sklearn 库中与决策树相关的算法都存放在sklearn.tree
模块里,该模块提供了 4 个决策树算法,下面对这些算法做简单的介绍:
1) .DecisionTreeClassifier()
这是一个经典的决策树分类算法,它提供了许多有用的参数,比如criterion
,该参数有两个参数值,分别是 gini(基尼指数)和 entropy(信息增益),默认情况下使用“基尼指数”,其中“gini”用于创建 CART 分类决策树,而“entropy”用于创建 ID3 分类决策树。
注意:在其余三个决策树算法中都可以使用 criterion 参数。
2) .DecisionTreeRegressor()
它表示用决策树算法解决回归问题。
3) .ExtraTreeClassifier()
该算法属于决策树分类算法,但又不同于.DecisionTreeClassifier()
算法,因为.ExtraTreeClassifier()
选择“特征维度”作为判别条件时具有随机性,它首先从特征集合中随机抽取 n 个特征维度来构建新的集合,然后再从新的集合中选取“判别条件”。
4) .ExtraTreeRegressor()
该算法同样具有随机性,它与.ExtraTreeClassifier()
随机过程类似,它主要解决机器学习中的回归问题。
决策树实现步骤
通过前面内容的学习,我们已经大体掌握了决策树算法的使用流程。决策树分类算法的关键在于选择合适的“判别条件”,该判别条件会使正确的分类的样本“纯度”最高。想要选取合适的特征属性就需要使用“信息熵”与“信息增益”等计算公式。
1) 确定纯度指标
确定纯度指标,用它来衡量不同“特征属性”所得到的纯度,并选取使得纯度取得最大值的“特征属性”作为的“判别条件”。
2) 切分数据集
通过特征属性做为“判别条件”对数据集集合进行切分。注意,使用过的“特征属性”不允许重复使用,该属性会从特征集合中删除。
3) 获取正确分类
选择特征集合内的特征属性,直至没有属性可供选择,或者是数据集样本已经完成分类为止。切记要选择占比最大的类别做为分类结果。
决策树算法应用
下面使用决策树算法对 Sklearn 库中的红酒数据进行模型训练,与数据预测,示例代码如下:
纯文本复制
- # 加载红酒数据集
- from sklearn.datasets import load_wine
- # 导入决策树分类器
- from sklearn.tree import DecisionTreeClassifier
- # 导入分割数据集的方法
- from sklearn.model_selection import train_test_split
- # 导入科学计算包
- import numpy as np
- # 加载红酒数据集
- wine_dataset=load_wine()
- # 分割训练集与测试集
- X_train,X_test,y_train,y_test=train_test_split(wine_dataset['data'],wine_dataset['target'],test_size=0.2,random_state=0)
- # 创建决策时分类器--ID3算法
- tree_model=DecisionTreeClassifier(criterion="entropy")
- # 喂入数据
- tree_model.fit(X_train,y_train)
- # 打印模型评分
- print(tree_model.score(X_test,y_test))
- # 给出一组数据预测分类
- X_wine_test=np.array([[11.8,4.39,2.39,29,82,2.86,3.53,0.21,2.85,2.8,.75,3.78,490]])
- predict_result=tree_model.predict(X_wine_test)
- print(predict_result)
- print("分类结果:{}".format(wine_dataset['target_names'][predict_result]))
输出结果如下:
0.9166666666666666 [1] 分类结果:['class_1']