【机器学习】决策树与分类案例分析

决策树与分类案例分析

文章目录

  • 决策树与分类案例分析
    • [1. 认识决策树](#1. 认识决策树)
    • [2. 分类](#2. 分类)
    • [3. 决策树的划分依据](#3. 决策树的划分依据)
    • [4. 决策树API](#4. 决策树API)
    • [5. 案例:鸢尾花分类](#5. 案例:鸢尾花分类)
    • [6. 决策树可视化](#6. 决策树可视化)
    • [7. 总结](#7. 总结)

1. 认识决策树

决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-else结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法。下面就来举一个例子:

通过这一个例子我们会有一个问题,为什么女生会把年龄放在第一个呢?这就是决策树的一个思想:高效性。

2. 分类

为了更好理解决策树是怎么分类的,我们给出一个例子:

现在我们有这些数据,请你根据这些数据,判断一个ID为16的人,是否能够贷款。我们现在要做的就是如何划分年龄、工作、房子、信贷这些数据。我们可以先看房子,再看工作...也可以先看工作,再看信贷...我们该如何选择来更高效的进行判断,所以我们引入信息熵、信息增益、条件熵、不确定性...

机器学习笔记02--决策树算法(手把手教你看懂)---信息熵,信息增益,增益率,基尼系数

计算过程这里就不演示了,直接出结果吧,我们以A·1,A2,A3,A4代表年龄、有工作、有自己的房子和贷款情况。最终计算的结果g(D,A1)=0.313,g(D,A2)=0.324,g(D,A3)=0.420,g(D,A4)=0.363,所以我们选择A3作为划分的第一个特征,这样我们就可以慢慢建立起一棵树。

3. 决策树的划分依据

决策树的原理不止信息增益这一种,还有其他方法。但是原理都类似,我们就不去举例计算了

  • ID3:信息增益,最大的准则
  • C4.5:信息增益比,最大的准则
  • CART
    • 分类树:基尼系数 最小的准则 再sklearn中可以选择划分的默认原则
    • 优势:划分更加细致

4. 决策树API

class sklearn.tree.DecisionTreeClassifier(criterion='gini',max_depth=None,random_state=None)

  • 决策树分类器
  • criterion:默认是'gini'系数,也可以选择信息增益的熵'entropy'
  • max_depth:树的深度大小
  • random_state:随机数种子

5. 案例:鸢尾花分类

python 复制代码
def decision_iris():
    """
    决策数对鸢尾花进行分类
    :return:
    """
    # 划分数据集
    iris = load_iris()
    # 划分数据集
    x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state= 22)
    # 决策树预估器
    estimator = DecisionTreeClassifier(criterion= "entropy")
    estimator.fit(x_train, y_train)
    # 模型评估
    y_predict = estimator.predict(x_test)
    print("y_predict:\n", y_predict)
    print("直接比对真实值和预测值:\n", y_test == y_predict)
    # 方法2:计算准确率
    score = estimator.score(x_test, y_test)
    print("准确率为:", score)
    return None
复制代码
y_predict:
 [0 2 1 2 1 1 1 1 1 0 2 1 2 2 0 2 1 1 1 1 0 2 0 1 2 0 1 2 2 1 0 0 1 1 1 0 0
 0]
直接比对真实值和预测值:
 [ True  True  True  True  True  True  True False  True  True  True  True
  True  True  True  True  True  True False  True  True  True  True  True
  True  True False  True  True False  True  True  True  True  True  True
  True  True]
准确率为: 0.8947368421052632

6. 决策树可视化

保存树的结构到dot文件

sklearn.tree.export_graphviz()

  • tree.export_graphviz(estimator,out_file="./tree.dot",feature_name=",")
python 复制代码
export_graphviz(estimator, out_file= "./tree.dot", feature_names= iris.feature_names)

生成了一个文件之后,我们需要把里面的文本导入到一个网站里面:http://webgraphviz.com/ 导入之后就成功了。

7. 总结

优点:

  • 简单的理解和解释,树木可视化

缺点:

  • 决策树学习者可以创建不能很好地推广数据的过于复杂的树,这被称为过拟合

改进:

  • 减枝cart算法
  • 随机森林
相关推荐
明志数科3 小时前
具身智能数据供给的分层:分布式采集与入厂采集的工程边界分析
人工智能·机器学习·机器人
傻啦嘿哟3 小时前
Python的默认参数把我坑惨了,原来写[]和写None的区别这么大
开发语言·python·机器学习
罗西的思考4 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 ---(5)--- GRPO
人工智能·算法·机器学习
richard_yuu5 小时前
动态规划:强化学习的「数学基础」,从 MDP 到值迭代
深度学习·神经网络·算法·yolo·机器学习·动态规划
搞科研的小刘选手5 小时前
【计算机方向 | IEEE出版 | 杭州站】第七届机器学习与计算机应用国际学术会议(ICMLCA 2026)
机器学习·学术会议·计算机应用·会议推荐·浙江工业大学
狂奔solar6 小时前
眨眼检测——OCEC 112KB 模型重新定义实时眼部状态分类
大数据·人工智能·分类
科研online6 小时前
用可解释机器学习XGBoost+SHAP发SCI期刊的优势?
人工智能·机器学习·学习方法
搞科研的小刘选手7 小时前
【工程院院士领衔 | SCI期刊专题同步征稿 | 湖南长沙举办】第五届图像处理、计算机视觉与机器学习国际学术会议(ICICML 2026)
图像处理·机器学习·计算机视觉·学术会议·会议推荐
致Great7 小时前
不止自动写论文!谷歌 ScientistTwo 让 AI 自己做实验、补消融、回审稿
人工智能·深度学习·机器学习
在所不辞兄7 小时前
【人工智能每日精选】足球防守的价值,藏在没发生的进攻里
深度学习·神经网络·机器学习