目录

【机器学习】决策树------迅速了其基本思想,Sklearn的决策树API及构建决策树的步骤!!!

目录

[🍔 案例剖析](#🍔 案例剖析)

[🍔 通过sklearn实现决策树分类并进一步认识决策树](#🍔 通过sklearn实现决策树分类并进一步认识决策树)

[🍔 基于规则构建决策树](#🍔 基于规则构建决策树)

[🍔 构建决策树的三个步骤](#🍔 构建决策树的三个步骤)

[🍔 小结](#🍔 小结)


学习目标

🍀 了解决策树算法的基本思想

🍀 了解Sklearn的决策树API

🍀 知道构建决策树的三个步骤

🍔 案例剖析

有的同学可能在大学学习过一门课程叫《数据结构》,里面有一个重要的结构就是"树",和现实生活中的树一样,树的主要由四部分树根树干树枝树叶组成,今天的决策树也是一种树结构,大家学习的时候可以想象现实生活中的树来来理解。

决策树算法是一种监督学习算法,英文是Decision tree。

决策树思想的来源非常朴素,试想每个人的大脑都有类似于if-else这样的逻辑判断,这其中的if表示的是条件,if之后的then就是一种选择或决策。程序设计中的条件分支结构就是if-then结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法。

比如:你母亲要给你介绍男朋友,是这么来对话的:

女儿:多大年纪了?

母亲:26。

女儿:长的帅不帅?

母亲:挺帅的。

女儿:收入高不?

母亲:不算很高,中等情况。

女儿:是公务员不?

母亲:是,在税务局上班呢。

女儿:那好,我去见见。

于是你在脑袋里面就有了下面这张图:

作为女孩的你在决策过程就是典型的分类树决策。相当于通过年龄、长相、收入和是否公务员对将男人分为两个类别:见和不见。

🍔 通过sklearn实现决策树分类并进一步认识决策树

基于鸢尾花数据绘制图像

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
​
from sklearn import datasets
​
iris = datasets.load_iris()
X = iris.data[:,2:]
y = iris.target
​
plt.scatter(X[y==0,0],X[y==0,1])
plt.scatter(X[y==1,0],X[y==1,1])
plt.scatter(X[y==2,0],X[y==2,1])
​
plt.show()

训练决策树模型

python 复制代码
from sklearn.tree import DecisionTreeClassifier
​
tree = DecisionTreeClassifier(max_depth=2,criterion="entropy")
tree.fit(X,y)

依据模型绘制决策树的决策边界

python 复制代码
#找到模型的决策边界,并绘制图像(此方法所用到的api不需要掌握,能够调用就行)
def plot_decision_boundary(model,axis):
    x0,x1 = np.meshgrid(
        np.linspace(axis[0],axis[1],int((axis[1]-axis[0])*100)).reshape(-1,1),
        np.linspace(axis[2],axis[3],int((axis[3]-axis[2])*100)).reshape(-1,1)
    )
    X_new = np.c_[x0.ravel(),x1.ravel()]
    y_predict = model.predict(X_new)
    zz = y_predict.reshape(x0.shape)
    
    from matplotlib.colors import ListedColormap
    custom_map = ListedColormap(["#EF9A9A","#FFF59D","#90CAF9"])
    
    plt.contourf(x0,x1,zz,linewidth=5,cmap=custom_map)
    
plot_decision_boundary(tree,axis=[0.5,7.5,0,3])
plt.scatter(X[y==0,0],X[y==0,1])
plt.scatter(X[y==1,0],X[y==1,1])
plt.scatter(X[y==2,0],X[y==2,1])
plt.show()

树模型可视化

python 复制代码
from sklearn.tree import plot_tree
import matplotlib.pyplot as plt
​
plot_tree(tree,filled=True)
plt.show()

从上面的可视化图形中看出

  • X[1] <=0.8 作为第一次分割的依据,满足条件的所有样本均为统一类别

  • X[1]>0.8的,依据 X[1]<=0.75 为划分依据

  • 由于设置了树的最大深度为2,第二层的两个叶子节点没有完全区分开

🍔 基于规则构建决策树

在商业的数据挖掘中,不同的消费行为顾客特征的提炼和表述极为重要。

我们模拟了部分顾客及其消费行为数据,包括如下特征:

  • 用户是否购买某种产品(0购买,1不购买)

  • 年龄(青年0,中年1,老年2)

  • 收入(高0,中1,低2)

  • 学生(是1,否0)

  • 信誉(良0,优1)。

我们收集了如表1-1的部分用户购买数据,建立了一张统一的调查表,统计几个月的销售数据。我们要对下表中潜在的客户进行分析,并根据得到的一些特征用于销售人员制定销售策略等工作。

总结为两个问题:

(1) 如何对客户进行分类?

(2) 如何根据分类的依据,给出销售人员的指导意见?

通过上述分析,即可解决问题:

(1)如何对客户进行分类?

答:根据数据集中收集的用户的特征信息

(2)如何根据分类依据,给出销售指导意见呢?

答:给出这样的销售意见:

中年人通常会无条件购买

青年人中如果是学生一般会购买

老年人中信誉好的常常会购买

下面我们思考,如何得到这样的分析结果信息?我们可以通过基于规则建树实现。

从定性的角度画出决策树:

从定量的角度画出决策树:

为什么需要从定量角度来分析呢?

答:这样会更精确的分析用户的特征信息,给出销售人员更准确的数据信息。

根据该树可以解决问题:

(1)如何对客户进行分类?

答:根据数据集中收集的用户的特征信息

(2)如何根据分类依据,给出销售指导意见呢?

答:给出这样的销售意见:

中年人通常会无条件购买

青年人中如果是学生一般会购买

老年人中信誉好的常常会购买

  • 以上就是基于规则建树,接下来我们总结构建决策树三要素。

  • 同时思考,上述建树过程有哪些地方可以优化?

接下来总结出构建决策树三要素

🍔 构建决策树的三个步骤

🐼 通过上述总结分析,归纳总结构建决策树包括三个步骤:

  • 特征选择:选取有较强分类能力的特征

  • 决策树生成

  • 决策树剪枝

🍔 小结

🍬 决策树算法:

  • 是非参数学习算法

  • 可以解决分类(多分类)问题

  • 可以解决回归问题:落在叶子节点的数据的平均值作为回归的结果

🍬 决策树API:

  • from sklearn.tree import DecisionTreeClassifier

  • from sklearn.tree import plot_tree

🍬 构建决策树的三个步骤:

  • 特征选择:选取有较强分类能力的特征

  • 决策树生成

  • 决策树剪枝

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
HUIBUR科技8 分钟前
量子计算与人工智能的结合:未来科技的双重革命
人工智能·ai·量子计算
资讯分享周12 分钟前
智谛达科技:以创新为翼,翱翔AI人形机器人蓝海
人工智能·科技·机器人
新智元31 分钟前
斯坦福 2025 AI 指数出炉!中美 AI 终极对决差距仅剩 0.3%,DeepSeek 领衔
人工智能
新智元32 分钟前
Llama 4 爆料大反转,没在测试集上训练!华人员工实名辟谣,LeCun 出面救火
人工智能·openai
新智元33 分钟前
数学大一统的惊人胜利!天才数学家用 30 年破解不可能,边看《星战》边写论文
人工智能·openai
三品PLM系统35 分钟前
三品PLM研发管理软件如何构筑制造企业全产品生命周期管理?
大数据·运维·人工智能·安全·制造
Yharim37 分钟前
wxPython官方文档中文翻译 - TipProvider概述
python
虹科数字化与AR43 分钟前
安宝特应用 | 工业AR技术赋能高端制造领域验收流程数字化转型
人工智能·ar·ar眼镜·工业ar
聪明的一休哥哥1 小时前
DeepSeek+Mermaid快速生成常用办公图表
人工智能
猿榜1 小时前
深入浅出 Python 面向对象编程
javascript·python