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

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

学习目标

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

🍀 了解Sklearn的决策树API

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

🍔 案例剖析

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

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

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

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

女儿:多大年纪了?

母亲:26。

女儿:长的帅不帅?

母亲:挺帅的。

女儿:收入高不?

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

女儿:是公务员不?

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

女儿:那好,我去见见。

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

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

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

基于鸢尾花数据绘制图像

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()

训练决策树模型

from sklearn.tree import DecisionTreeClassifier
tree = DecisionTreeClassifier(max_depth=2,criterion="entropy")
tree.fit(X,y)

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

#找到模型的决策边界,并绘制图像(此方法所用到的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()

树模型可视化

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

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

  • 特征选择:选取有较强分类能力的特征
  • 决策树生成
  • 决策树剪枝
相关文章
|
26天前
|
JSON 缓存 JavaScript
深入浅出:使用Node.js构建RESTful API
在这个数字时代,API已成为软件开发的基石之一。本文旨在引导初学者通过Node.js和Express框架快速搭建一个功能完备的RESTful API。我们将从零开始,逐步深入,不仅涉及代码编写,还包括设计原则、最佳实践及调试技巧。无论你是初探后端开发,还是希望扩展你的技术栈,这篇文章都将是你的理想指南。
|
7天前
|
JSON API 数据安全/隐私保护
淘宝评论API接口操作步骤详解,代码示例参考
淘宝评论API接口是淘宝开放平台提供的一项服务,通过该接口,开发者可以访问商品的用户评价和评论。这些评论通常包括评分、文字描述、图片或视频等内容。商家可以利用这些信息更好地了解消费者的需求和偏好,优化产品和服务。同时,消费者也可以从这些评论中获得准确的购买参考,做出更明智的购买决策。
|
25天前
|
机器学习/深度学习 数据采集 数据处理
Scikit-learn Pipeline完全指南:高效构建机器学习工作流
Scikit-learn管道是构建高效、鲁棒、可复用的机器学习工作流程的利器。通过掌握管道的使用,我们可以轻松地完成从数据预处理到模型训练、评估和部署的全流程,极大地提高工作效率。
38 2
Scikit-learn Pipeline完全指南:高效构建机器学习工作流
|
18天前
|
机器学习/深度学习 人工智能 算法
人工智能浪潮下的编程实践:构建你的第一个机器学习模型
在人工智能的巨浪中,每个人都有机会成为弄潮儿。本文将带你一探究竟,从零基础开始,用最易懂的语言和步骤,教你如何构建属于自己的第一个机器学习模型。不需要复杂的数学公式,也不必担心编程难题,只需跟随我们的步伐,一起探索这个充满魔力的AI世界。
36 12
|
19天前
|
JSON JavaScript 前端开发
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发作为连接用户与数据的桥梁,扮演着至关重要的角色。本文将引导您步入Node.js的奇妙世界,通过实践操作,掌握如何使用这一强大的JavaScript运行时环境构建高效、可扩展的RESTful API。我们将一同探索Express框架的使用,学习如何设计API端点,处理数据请求,并实现身份验证机制,最终部署我们的成果到云服务器上。无论您是初学者还是有一定基础的开发者,这篇文章都将为您打开一扇通往后端开发深层知识的大门。
36 12
|
25天前
|
监控 安全 API
深入浅出:构建高效RESTful API的最佳实践
在数字化时代,API已成为连接不同软件和服务的桥梁。本文将带你深入了解如何设计和维护一个高效、可扩展且安全的RESTful API。我们将从基础概念出发,逐步深入到高级技巧,让你能够掌握创建优质API的关键要素。无论你是初学者还是有经验的开发者,这篇文章都将为你提供实用的指导和启示。让我们一起探索API设计的奥秘,打造出色的后端服务吧!
|
23天前
|
JSON 缓存 测试技术
构建高效RESTful API的后端实践指南####
本文将深入探讨如何设计并实现一个高效、可扩展且易于维护的RESTful API。不同于传统的摘要概述,本节将直接以行动指南的形式,列出构建RESTful API时必须遵循的核心原则与最佳实践,旨在为开发者提供一套直接可行的实施框架,快速提升API设计与开发能力。 ####
|
26天前
|
负载均衡 安全 API
小红书商品详情API接口获取步骤
获取小红书商品详情API接口需先注册账号并实名认证,阅读API文档后,通过编程语言调用API,构建请求参数,处理返回数据。确保应用支持高并发,遵守安全规范,申请API权限,查阅接口文档,进行开发调试。
|
27天前
|
机器学习/深度学习 数据采集 算法
从零到一:构建高效机器学习模型的旅程####
在探索技术深度与广度的征途中,我深刻体会到技术创新既在于理论的飞跃,更在于实践的积累。本文将通过一个具体案例,分享我在构建高效机器学习模型过程中的实战经验,包括数据预处理、特征工程、模型选择与优化等关键环节,旨在为读者提供一个从零开始构建并优化机器学习模型的实用指南。 ####
|
25天前
|
JavaScript NoSQL API
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发如同一座灯塔,指引着数据的海洋。本文将带你航行在Node.js的海域,探索如何从一张白纸到完成一个功能完备的RESTful API。我们将一起学习如何搭建开发环境、设计API结构、处理数据请求与响应,以及实现数据库交互。准备好了吗?启航吧!
下一篇
DataWorks