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

「作者主页」:士别三日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%

相关推荐
xiaoxiaoxiaolll18 小时前
Light: Sci. Appl. 封面级研究:光谱奇点拓扑环绕 + BIC共振 = 新一代多功能平面器件
人工智能·机器学习
AI医影跨模态组学19 小时前
Int J Surg华中科技大学同济医学院附属协和医院:可解释机器学习模型预测胰腺癌早期复发:整合瘤内瘤周影像组学及身体成分分析
人工智能·机器学习·论文·医学·医学影像·影像组学
BJ_bafangonline19 小时前
Houdini 与 AI 的深度融合:从合成数据生成到机器学习训练的全流程解析
人工智能·机器学习·houdini
灰灰勇闯IT20 小时前
hixl 单边通信:昇腾推理的高效互联通道
人工智能·深度学习·机器学习
放下华子我只抽RuiKe521 小时前
React 从入门到生产(二):状态与事件处理
前端·人工智能·深度学习·react.js·机器学习·前端框架·github
fl17683121 小时前
密封圈质量检测密封圈缺陷检测数据集VOC+YOLO格式1295张5类别有增强
人工智能·yolo·机器学习
Bingorl21 小时前
机器学习之逻辑回归算法
机器学习
切糕师学AI21 小时前
机器学习中的剪枝(Pruning):从决策树到深度学习的全面解析
决策树·机器学习·剪枝
AI布道师-wang21 小时前
第 6 章:Prompt 工程——和模型高效沟通
人工智能·机器学习·prompt
枫叶林FYL21 小时前
【机器学习与智慧医疗】糖尿病视网膜病变视力丧失预测:贝叶斯估计与威布尔分布
大数据·人工智能·机器学习