iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么在Python中实现决策树算法
  • 352
分享到

怎么在Python中实现决策树算法

2023-06-15 01:06:08 352人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

怎么在python中实现决策树算法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.算法概述决策树算法是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大

怎么在python中实现决策树算法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

1.算法概述

决策树算法是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法。

分类算法是利用训练样本集获得分类函数即分类模型(分类器),从而实现将数据集中的样本划分到各个类中。分类模型通过学习训练样本中属性集与类别之间的潜在关系,并以此为依据对新样本属于哪一类进行预测。

怎么在Python中实现决策树算法

决策树算法是直观运用概率分析的一种图解法,是一种十分常用的分类方法,属于有监督学习。

决策树是一种树形结构,其中每个内部结点表示在一个属性上的测试,每个分支代表一个测试输出,每个叶子结点代表一种类别。

决策树学习是以实例为基础的归纳学习,它采用自顶向下的递归方法,其基本思想是以信息熵为度量构造一颗熵值下降最快的树,到叶子结点处的熵值为零,此时每个叶子节点中的实例都属于同一类。

决策树学习算法的最大优点是,它可以自学习,在学习的过程中不需要使用者了解过多的背景知识,只需要对训练实例进行较好的标注,就能够进行学习。

2.算法种类

ID3算法

  • ID3算法中根据信息论的信息增益评估和选择特征。每次选择信息增益最大的候选特征,作为判断模块。

  • 信息增益与属性的值域大小成正比。属性取值种类越多,越有可能成为分裂属性。

  • ID3也不能处理连续分布的数据。

C4.5算法

  • C4.5算法使用信息增益率代替信息增益,进行特征选择,克服了信息增益选择特征时偏向于特征值个数较多的不足。

  • C4.5算法具体算法步骤与ID3类似。

  • C4.5能够完成对连续属性的离散化处理,能够对不完整数据进行处理。

C5.0算法

  • C5.0算法是Quinlan在C4.5算法的基础上提出的商用改进版本,目的是对含有大量数据的数据集进行分析。

  • C5.0算法与C4.5算法相比有以下优势:

    • 决策树构建时间要比C4.5算法快上数倍,同时生成的决策树规模也更小,拥有更少的叶子结点数

    • 使用了提升法(boosting),组合多个决策树来做出分类,使准确率大大提高

    • 提供可选项由使用者视情况决定,例如是否考虑样本的权重、样本错误分类成本等

CART算法

  • CART决策树的生成就是递归地构建二叉决策树的过程。

  • CART用基尼系数最小化准则来进行特征选择,生成二叉树

  • Gini系数计算公式:

怎么在Python中实现决策树算法

3.算法示例

怎么在Python中实现决策树算法

机器学习中,决策树是一种预测模型,它代表的是对象属性与对象值之间的一种映射关系。

决策树的目的是拟合一个可以通过指定输入值预测最终输出值得模型。

怎么在Python中实现决策树算法

4.决策树构建示例

描述

怎么在Python中实现决策树算法

分析

怎么在Python中实现决策树算法

计算

怎么在Python中实现决策树算法

结论

怎么在Python中实现决策树算法

5.算法实现步骤

选择属性是构建一颗决策树非常关键的一步,被选择的属性会成为决策树的一个节点,并且不断递归地选择最优的属性就可以最终构建决策树。

怎么在Python中实现决策树算法

计算数据集S中的每个属性的熵 H(xi)选取数据集S中熵值最小(或者信息增益最大,两者等价)的属性在决策树上生成该属性节点使用剩余结点重复以上步骤生成决策树的属性节点

 6.算法相关概念

1948年,香农提出了“信息熵”的概念,熵是接收的每条信息中所包含信息的平均量,是不确定性的量度,而不是确定性的量度,因为越随机的信源的熵越大。熵被定义为概率分布的对数的相反数。

信息熵的公式:怎么在Python中实现决策树算法

信息增益

“信息增益”是用来衡量一个属性区分数据样本的能力,当使用某一个属性作为一棵决策树的根节点时,该属性的信息增益量就越大。决策树会选择最大化信息增益来对结点进行划分。

怎么在Python中实现决策树算法

7.算法实现代码

import numpy as npimport mathfrom collections import Counter# 创建数据def create_data():    X1 = np.random.rand(50, 1)*100    X2 = np.random.rand(50, 1)*100    X3 = np.random.rand(50, 1)*100        def f(x):        return 2 if x > 70 else 1 if x > 40 else 0        y = X1 + X2 + X3    Y = y > 150    Y = Y + 0    r = map(f, X1)    X1 = list(r)        r = map(f, X2)    X2 = list(r)        r = map(f, X3)    X3 = list(r)    x = np.c_[X1, X2, X3, Y]    return x, ['courseA', 'courseB', 'courseC']# 计算集合信息熵的函数def calculate_info_entropy(dataset):    n = len(dataset)    # 我们用Counter统计一下Y的数量    labels = Counter(dataset[:, -1])    entropy = 0.0    # 套用信息熵公式    for k, v in labels.items():        prob = v / n        entropy -= prob * math.log(prob, 2)    return entropy# 实现拆分函数def split_dataset(dataset, idx):  # idx是要拆分的特征下标    splitData = defaultdict(list)    for data in dataset:      # 这里删除了idx这个特征的取值,因为用不到了        splitData[data[idx]].append(np.delete(data, idx))    return list(splitData.values()), list(splitData.keys())# 实现特征的选择函数def choose_feature_to_split(dataset):    n = len(dataset[0])-1    m = len(dataset)    # 切分之前的信息熵    entropy = calculate_info_entropy(dataset)    bestGain = 0.0    feature = -1    for i in range(n):      # 根据特征i切分        split_data, _ = split_dataset(dataset, i)        new_entropy = 0.0        # 计算切分后的信息熵        for data in split_data:            prob = len(data) / m            new_entropy += prob * calculate_info_entropy(data)        # 获取信息增益        gain = entropy - new_entropy        if gain > bestGain:            bestGain = gain            feature = i    return feature# 决策树创建函数def create_decision_tree(dataset, feature_names):    dataset = np.array(dataset)    counter = Counter(dataset[:, -1])    # 如果数据集值剩下了一类,直接返回    if len(counter) == 1:        return dataset[0, -1]        # 如果所有特征都已经切分完了,也直接返回    if len(dataset[0]) == 1:        return counter.most_common(1)[0][0]        # 寻找最佳切分的特征    fidx = choose_feature_to_split(dataset)    fname = feature_names[fidx]        node = {fname: {}}    feature_names.remove(fname)        # 递归调用,对每一个切分出来的取值递归建树    split_data, vals = split_dataset(dataset, fidx)    for data, val in zip(split_data, vals):        node[fname][val] = create_decision_tree(data, feature_names[:])    return node# 决策树节点预测函数def classify(node, feature_names, data):  # 获取当前节点判断的特征    key = list(node.keys())[0]    node = node[key]    idx = feature_names.index(key)        # 根据特征进行递归    pred = None    for key in node:      # 找到了对应的分叉        if data[idx] == key:          # 如果再往下依然还有子树,那么则递归,否则返回结果            if isinstance(node[key], dict):                pred = classify(node[key], feature_names, data)            else:                pred = node[key]                    # 如果没有对应的分叉,则找到一个分叉返回    if pred is None:        for key in node:            if not isinstance(node[key], dict):                pred = node[key]                break    return pred

8.算法优缺点

 优点:小规模数据集有效

缺点

  • 处理连续变量不好

  • 类别比较多时,错误增加得比较快

  • 不能处理大量数据

9.算法优化

决策树算法是一种非常经典的算法,其训练过程中主要依靠获得数据间的熵及信息增益作为划分依据,分类效果较好。但一般情况下我们训练决策树均是在数据量较小的数据集进行,当训练分类器所用的训练数据足够大时,决策树会出现树身过高、拟合效果差等问题。因此,如何高效准确的构建决策树成为模式识别领域的一项研究热点。

使用增量训练的方式迭代训练决策树
融合Bagging与Boosting技术训练多棵决策树
对于波动不大、方差较小的数据集, 可以探寻一种比较稳定的分裂准则作为解决办法

Python的五大特点是什么

python的五大特点:1.简单易学,开发程序时,专注的是解决问题,而不是搞明白语言本身。2.面向对象,与其他主要的语言如c++和Java相比, Python以一种非常强大又简单的方式实现面向对象编程。3.可移植性,Python程序无需修改就可以在各种平台上运行。4.解释性,Python语言写的程序不需要编译成二进制代码,可以直接从源代码运行程序。5.开源,Python是 FLOSS(自由/开放源码软件)之一。

关于怎么在Python中实现决策树算法问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网Python频道了解更多相关知识。

--结束END--

本文标题: 怎么在Python中实现决策树算法

本文链接: https://www.lsjlt.com/news/276667.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在Python中实现决策树算法
    怎么在Python中实现决策树算法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.算法概述决策树算法是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大...
    99+
    2023-06-15
  • python决策树算法怎么实现
    这篇文章将为大家详细讲解有关python决策树算法怎么实现,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、步骤计算数据集S中的每个属性的熵 H(xi)选取数据集S中熵值最小(或者信息增益最大,两者等价)...
    99+
    2023-06-15
  • 怎么用Python实现CART决策树算法
    这篇文章主要讲解了“怎么用Python实现CART决策树算法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python实现CART决策树算法”吧!一、CART决策树算法简介CART(C...
    99+
    2023-06-25
  • 如何在Python中实现一个决策树算法?
    作者:禅与计算机程序设计艺术 1.简介 在机器学习领域,决策树(decision tree)是一种常用的模式分类算法。它能够将输入数据划分成不同类别或不同输出值,并据此做出预测。而对于复杂的数据分析任...
    99+
    2023-10-23
    自然语言处理 人工智能 语言模型 编程实践 开发语言 架构设计
  • python如何实现决策树分类算法
    今天小编给大家分享一下python如何实现决策树分类算法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前置信息1、决策树决策...
    99+
    2023-07-02
  • Python学习教程:决策树算法(三)sklearn决策树实战
    前面有跟大家出过两期关于决策树算法的Python学习教程,伙伴们学了学了,今天来点实际的吧,实践一把!做个巩固!Python有一个著名的机器学习框架,叫sklearn。我们可以用sklearn来运行前面说到的赖床的例子。不过在这之前,我们需...
    99+
    2023-06-02
  • Java如何实现决策树算法
    小编给大家分享一下Java如何实现决策树算法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:决策树算法是一种逼近离散函数值的方法。它是一种典型的分类方法,...
    99+
    2023-05-30
    java
  • python中决策树算法指的是什么
    这篇文章给大家分享的是有关python中决策树算法指的是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、说明决策树算法是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评...
    99+
    2023-06-15
  • Python基于决策树算法的分类预测怎么实现
    今天小编给大家分享一下Python基于决策树算法的分类预测怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、决策树的...
    99+
    2023-06-26
  • 机器学习之决策树算法怎么实现
    决策树是一种常用的机器学习算法,主要用于分类和回归问题。下面是决策树算法的实现步骤:1. 数据预处理:将原始数据进行清洗和转换,包括...
    99+
    2023-10-11
    机器学习
  • Python实现决策树算法的原理与实现方式
    决策树算法属于监督学习算法的范畴,适用于连续和分类输出变量,通常会被用于解决分类和回归问题。 决策树是一种类似流程图的树结构,其中每个内部节点表示对属性的测试,每个分支表示测试的结果,每个节点都对应一个类标签。 决策树算法思路 ...
    99+
    2024-01-22
    算法的概念
  • python实现决策树分类算法代码示例
    目录前置信息1、决策树2、样本数据策树分类算法1、构建数据集2、数据集信息熵3、信息增益4、构造决策树5、实例化构造决策树6、测试样本分类后置信息:绘制决策树代码总结前置信息 1、决...
    99+
    2024-04-02
  • Python实现CART决策树算法及详细注释
    目录一、CART决策树算法简介二、基尼系数三、CART决策树生成算法四、CART算法的Python实现五、运行结果一、CART决策树算法简介 CART(Classification ...
    99+
    2024-04-02
  • Python机器学习算法之决策树算法的实现与优缺点
    目录1.算法概述2.算法种类3.算法示例4.决策树构建示例5.算法实现步骤 6.算法相关概念7.算法实现代码8.算法优缺点9.算法优化总结1.算法概述 决策树算法是在已知各...
    99+
    2024-04-02
  • 如何在Python中使用决策树
    这期内容当中小编将会给大家带来有关如何在Python中使用决策树,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语...
    99+
    2023-06-14
  • ID3决策树及Python实现(详细)
    目录 一、划分特征的评价指标: 二、决策树学习算法伪代码: 三、决策树生成实例: 四、Python实现ID3决策树: 一、划分特征的评价指标: 1、信息熵 Ent(D): 信息熵,是度量样本集合纯度的一种指标,Ent(D)的值越小,...
    99+
    2023-10-11
    python 决策树 机器学习
  • 使用Python中从头开始构建决策树算法
    决策树(Decision Tree)是一种常见的机器学习算法,被广泛应用于分类和回归任务中。并且再其之上的随机森林和提升树等算法一直是表格领域的最佳模型,所以本文将介绍理解其数学概念,并在Python...
    99+
    2023-08-31
    算法 python 决策树 机器学习
  • 关于决策树算法的Python示例分析
    本篇文章给大家分享的是有关关于决策树算法的Python示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一. 概述前面的一篇Python学习教程有跟大家介绍了决策树的一些基...
    99+
    2023-06-02
  • Python中怎么构建一个决策树
    本篇文章给大家分享的是有关Python中怎么构建一个决策树,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。决策树决策树是当今最强大的监督学习方法的组成部分。决策树基本上是一个二叉...
    99+
    2023-06-16
  • 如何在Python中实现avl树运算
    Python执行avl树,代码详情:import sys #创建树节点 class TreeNode(object): def __init__(self,key): self.key=key self.left=None se...
    99+
    2024-01-23
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作