《机器学习核心技术》分类算法 - 决策树

「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:小白零基础《Python入门到精通》

决策树

决策树是一种 「二叉树形式」的预测模型,每个 「节点」对应一个 「判断条件」, 「满足」上一个条件才能 「进入下一个」判断条件。

就比如找对象,第一个条件肯定是长得帅,长得帅的才考虑下一个条件;长得不帅就直接pass,不往下考虑了。

决策树的「核心」在于:如何找到「最高效」的「决策顺序」。

1、决策树API

sklearn.tree.DecisionTreeClassifier() 是决策树分类算法的API

参数

  • criterion:(可选)衡量分裂的质量,可选值有ginientropylog_loss,默认值 gini
  • splitter:(可选)给每个节点选择分割的策略,可选值有bestrandom,默认值 best
  • max_depth:(可选)树的最大深度,默认值 None
  • min_samples_split:(可选)分割节点所需要的的最小样本数,默认值 2
  • min_samples_leaf:(可选)叶节点上所需要的的最小样本数,默认值 1
  • min_weight_fraction_leaf:(可选)叶节点的权重总和的最小加权分数,默认值 0.0
  • max_features:(可选)寻找最佳分割时要考虑的特征数量,默认值 None
  • random_state:(可选)控制分裂特征的随机数,默认值 None
  • max_leaf_nodes:(可选)最大叶子节点数,默认值 None
  • min_impurity_decrease:(可选)如果分裂指标的减少量大于该值,就进行分裂,默认值 0.0
  • class_weight:(可选)每个类的权重,默认值 None
  • ccp_alpha:(可选)将选择成本复杂度最大且小于ccp_alpha的子树。默认情况下,不执行修剪。

函数

  • fit( x_train, y_train ):接收训练集特征 和 训练集目标
  • predict( x_test ):接收测试集特征,返回数据的类标签。
  • score( x_test, y_test ):接收测试集特征 和 测试集目标,返回准确率。
  • predict_log_proba():预测样本的类对数概率

属性

  • classes_:类标签
  • feature_importances_:特征的重要性
  • max_features_:最大特征推断值
  • n_classes_:类的数量
  • n_features_in_:特征数
  • feature_names_in_:特征名称
  • n_outputs_:输出的数量
  • tree_:底层的tree对象

2、决策时实际应用

2.1、获取数据集

这里使用sklearn自带的鸢尾花数据集进行演示。

python 复制代码
from sklearn import datasets

# 1、获取数据集
iris = datasets.load_iris()

2.2、划分数据集

传入数据集的特征值和目标值,按照默认的比例划分数据集。

python 复制代码
from sklearn import datasets
from sklearn import model_selection

# 1、获取数据集
iris = datasets.load_iris()
# # 2、划分数据集
x_train, x_test, y_train, y_test = model_selection.train_test_split(iris.data, iris.target)

2.3、决策树处理

实例化对象,传入训练集特征值和目标值,开始训练。

python 复制代码
from sklearn import datasets
from sklearn import model_selection
from sklearn import tree

# 1、获取数据集
iris = datasets.load_iris()
# # 2、划分数据集
x_train, x_test, y_train, y_test = model_selection.train_test_split(iris.data, iris.target)
# # 3、决策树处理
estimator = tree.DecisionTreeClassifier()
estimator.fit(x_train, y_train)

2.4、模型评估

对比测试集,验证准确率。

python 复制代码
from sklearn import datasets
from sklearn import model_selection
from sklearn import tree

# 1、获取数据集
iris = datasets.load_iris()
# # 2、划分数据集
x_train, x_test, y_train, y_test = model_selection.train_test_split(iris.data, iris.target)
# # 3、决策树处理
estimator = tree.DecisionTreeClassifier()
estimator.fit(x_train, y_train)
# # 4、模型评估
y_predict = estimator.predict(x_test)
print('对比真实值和预测值', y_test == y_predict)
score = estimator.score(x_test, y_test)
print('准确率:', score)

输出:

bash 复制代码
对比真实值和预测值 [ True  True  True  True  True False  True  True  True  True  True  True
 False  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True]
准确率: 0.9473684210526315

从结果可以看到,准确率达到了94%

相关推荐
jerryinwuhan16 分钟前
SVM案例分析
算法·机器学习·支持向量机
郝学胜-神的一滴40 分钟前
计算机图形中的法线矩阵:深入理解与应用
开发语言·程序人生·线性代数·算法·机器学习·矩阵·个人开发
青云交1 小时前
Java 大视界 --Java 大数据机器学习模型在金融风险压力测试中的应用与验证
java·随机森林·机器学习·lstm·压力测试·联邦学习·金融风险
Khunkin2 小时前
基于几何直觉理解牛顿迭代法
机器学习
大千AI助手2 小时前
差分隐私:机器学习和数据发布中的隐私守护神
人工智能·神经网络·机器学习·dp·隐私保护·差分隐私·大千ai助手
禁默2 小时前
第四届图像处理、计算机视觉与机器学习国际学术会议(ICICML 2025)
图像处理·机器学习·计算机视觉
Dev7z2 小时前
结合HOG特征与支持向量机(SVM)的车牌字符识别系统
人工智能·分类·数据挖掘
机器学习之心3 小时前
MATLAB基于BNT工具箱的多输入分类预测
matlab·分类
流烟默3 小时前
机器学习中模型的鲁棒性是什么
人工智能·机器学习·鲁棒性
粉色挖掘机3 小时前
矩阵在密码学的应用——希尔密码详解
线性代数·算法·机器学习·密码学