如何在 Python 中使用决策树构建分类器?
决策树是随机森林算法的基本构建块。它被认为是机器学习中最流行的算法之一,用于分类目的。它们非常受欢迎,因为它们易于理解。
决策树给出的决策可以用来解释为什么做出了某个预测。这意味着用户可以清楚地了解过程的输入和输出。它们也是集成方法(如 Bagging、随机森林和梯度提升)的基础。它们也被称为 CART,即分类和回归树。它可以可视化为二叉树(在数据结构和算法中学习到的)。
树中的每个节点都表示单个输入变量,叶子节点(也称为终端节点)包含输出变量。这些叶子节点用于对节点进行预测。在创建决策树时,基本思想是将给定的空间划分为多个部分。所有值都被列出,并尝试不同的分割,以便获得较低的成本和最佳的预测值。这些值以贪婪的方式选择。
这些节点的分割一直持续到达到树的最大深度。使用决策树的目的是根据特定特征值将输入数据集划分为更小的数据集,直到每个目标变量都属于一个类别。进行此分割是为了在每一步获得最大的信息增益。
每个决策树都以根节点开始,这是进行第一次分割的地方。应该设计一种有效的方法来确保节点的定义。
这就是基尼系数发挥作用的地方。基尼系数被认为是衡量不平等的最常用度量之一。不平等是指每个节点中的子集可能属于的目标类(输出)。
因此,在每次分割后计算基尼系数。根据基尼系数/不平等值,可以定义信息增益。
DecisionTreeClassifier 用于执行多类分类。
以下是相同的语法。
class sklearn.tree.DecisionTreeClassifier(*, criterion='gini',…)
以下是一个示例 -
示例
from sklearn import tree from sklearn.model_selection import train_test_split my_data = [[16,19],[17,32],[13,3],[14,5],[141,28],[13,34],[186,2],[126,25],[176,28], [131,32],[166,6],[128,32],[79,110],[12,38],[19,91],[71,136],[116,25],[17,200], [15,25], [14,32],[13,35]] target_vals =['Man','Woman','Man','Woman', 'Woman','Man','Woman','Woman', 'Woman','Woman','Woman','Man','Man', 'Man','Woman', 'Woman', 'Woman', 'Woman','Man','Woman','Woman'] data_feature_names = ['Feature_1','Feature_2'] X_train, X_test, y_train, y_test = train_test_split(my_data, target_vals, test_size = 0.2, random_state = 1) clf = tree.DecisionTreeClassifier() print("The decision tree classifier is being called") DTclf = clf.fit(my_data,target_vals) prediction = DTclf.predict([[135,29]]) print("The predicted value is ") print(prediction)
输出
The decision tree classifier is being called The predicted value is ['Woman']
解释
- 所需的包被导入到环境中。
- 该代码用于根据特征值对目标值的分类。
- 定义特征向量和目标值。
- 使用“train_test_split”函数将数据分割成训练集和测试集。
- 调用 DecisionTreeClassifier 并将数据拟合到模型。
- “predict”函数用于预测特征值的预测值。
- 输出显示在控制台上。
广告