sklearn决策树分类算法应用

1年前 (2024-04-27)
本节基于 Python Sklearn 机器学习算法库,对决策树这类算法做相关介绍,并对该算法的使用步骤做简单的总结,通过应用案例对决策树算法的代码实现进行演示。

决策树算法应用

在 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']