决策树分类算法

#CSDN AI写作助手创作测评 

目录

ID3算法 

1.算法原理

2.代码实现

3.ID3算法的优缺点分析

C4.5算法

1.原理 

2.优缺点

心得感受


决策树表示方法是应用最广泛的逻辑方法之一,它从一组无次序、无规则的事例中推理出决策树表示形式的分类规则。在决策树的内部节点进行属性值的比较,根据不同的属性值判断从该节点向下的分支,在决策树的叶节点得到结论

决策树分类算法的主要优点包括易于理解和解释、对缺失值不敏感、能处理不相关特征等。它的主要缺点是容易过拟合、对噪声敏感、不稳定等问题。

在实践中,决策树分类算法可以使用不同的算法实现,如ID3、C4.5和CART等。这些算法的主要区别在于如何选择属性、如何处理连续值属性和如何处理缺失值等方面。

ID3算法 

1.算法原理

 ID3算法是一种决策树学习算法,通过对数据集进行递归分割来构建决策树。它基于信息增益选择最佳属性进行分裂。下面是ID3算法的基本原理:

  • 1. 选择最佳分裂属性:对于数据集中的每个属性,计算它们对数据集的信息增益(或信息增益比),选择信息增益最大(或信息增益比最大)的属性作为该节点的分裂属性。
  • 2. 将节点分裂成子节点:用分裂属性将数据集分成几个子集,每个子集对应一个子节点。
  • 3. 递归处理子节点:对每个子节点递归进行操作,直到所有叶子节点都是同一类别或无法继续分裂。
  • 4. 剪枝:使用预留的测试数据集来剪枝以防止过拟合。
  • 5. 生成决策树:所有子节点的递归处理完成后,生成一棵决策树。

ID3算法的缺点是对于具有连续属性和缺失值的数据集处理能力较差。因此,它常与C4.5和CART算法结合使用,用于改进这些限制。

2.代码实现

import mathdef entropy(data):"""计算数据集的熵"""count = {}for item in data:if item[-1] not in count:count[item[-1]] = 0count[item[-1]] += 1entropy = 0for key in count:prob = count[key] / len(data)entropy -= prob * math.log2(prob)return entropydef split_data(data, feature, value):"""根据特征和特征值划分数据集"""sub_data = []for item in data:if item[feature] == value:sub_item = item[:feature]sub_item.extend(item[feature+1:])sub_data.append(sub_item)return sub_datadef info_gain(data, feature):"""计算特征的信息增益"""count = {}for item in data:if item[feature] not in count:count[item[feature]] = 0count[item[feature]] += 1sub_entropy = 0for key in count:prob = count[key] / sum(count.values())sub_data = split_data(data, feature, key)sub_entropy += prob * entropy(sub_data)return entropy(data) - sub_entropydef choose_feature(data):"""选择最优特征"""max_gain = 0best_feature = -1for i in range(len(data[0])-1):gain = info_gain(data, i)if gain > max_gain:max_gain = gainbest_feature = ireturn best_featuredef majority_vote(class_list):"""多数表决"""count = {}for item in class_list:if item not in count:count[item] = 0count[item] += 1return max(count, key=count.get)def create_tree(data, labels):"""创建决策树"""class_list = [item[-1] for item in data]if class_list.count(class_list[0]) == len(class_list):return class_list[0]if len(data[0]) == 1:return majority_vote(class_list)best_feature = choose_feature(data)best_label = labels[best_feature]tree = {best_label: {}}del(labels[best_feature])count = {}for item in data:if item[best_feature] not in count:count[item[best_feature]] = 0count[item[best_feature]] += 1for key in count:sub_labels = labels[:]sub_data = split_data(data, best_feature, key)tree[best_label][key] = create_tree(sub_data, sub_labels)return tree# 测试数据
data = [[1, 1, 'yes'],[1, 1, 'yes'],[1, 0, 'no'],[0, 1, 'no'],[0, 1, 'no'],
]
labels = ['no surfacing', 'flippers']# 构建决策树
tree = create_tree(data, labels)# 输出熵和信息增益
print('Entropy:', entropy(data))
for i in range(len(labels)):print('Info gain of', labels[i], ':', info_gain(data, i))

 

3.ID3算法的优缺点分析

ID3算法是一种决策树学习算法,其优缺点如下:

优点:

  • 1. 算法简单易懂,不需要复杂的数学知识。
  • 2. 生成的决策树易于理解和解释,可以很好地反映属性之间的关系。
  • 3. 在处理大型数据集时,算法的效率较高。
  • 4. 可以处理缺失值。

缺点:

  • 1. ID3算法容易过拟合,很容易出现训练集上表现很好,但是在测试集上表现很差的情况。
  • 2. ID3算法只能处理离散型数据,对于连续型数据需要先进行离散化处理。
  • 3. 对于分类类别较多的数据集,生成的决策树不易读懂且容易过于复杂。
  • 4. ID3算法只考虑当前数据集中的最优特征,可能会错过更好的特征组合。这种算法也称为"贪心算法"。
  • 5. 对于噪声较大或者数据比较杂乱的数据集,决策树有些难以生成。

C4.5算法

1.原理 

C4.5算法是一种决策树算法,用于解决分类问题。它的主要原理是通过对数据集进行划分来构建一棵决策树,每次选择最优特征进行划分,直到所有数据都被正确分类或者没有更多的特征可用。

C4.5算法的具体步骤如下:

  • 1. 读入训练数据集,对每个特征计算出其信息增益比。信息增益比是指使用该特征进行划分所得到的信息增益与该特征对应的数据集的经验熵之比。
  • 2. 选择信息增益比最大的特征作为当前节点的划分特征,将该节点对应的数据集划分成若干个子集。
  • 3. 对每个子集递归执行步骤1和2,直到满足终止条件。
  • 4. 终止条件可以是所有数据都被正确分类,或者没有更多的特征可用进行划分。此时,将该节点标记为叶子节点,并将该节点的分类设定为子集中出现次数最多的分类。
  • 5. 对新的数据进行分类时,从根节点开始,根据特征的取值依次按照决策树的分支进行遍历,直到到达叶子节点,将叶子节点的分类作为最终结果。

C4.5算法在构建决策树的过程中,还采用了剪枝操作来避免过拟合,同时能够处理连续特征和缺失值。它是ID3算法的改进,相对于ID3算法而言,C4.5算法可以处理更复杂的数据集。

2.优缺点

C4.5算法是一种决策树分类算法,其优缺点如下:

优点:

  • 1. 可以处理具有连续值属性的数据集,而不需要对数据进行离散化处理。
  • 2. 能够自动剪枝,避免过度拟合的问题。
  • 3. 具有良好的可读性和可解释性,生成的决策树可以直观地表示数据集的结构和规律。
  • 4. 在实际应用中具有较高的准确性和鲁棒性。

缺点:

  • 1. 对于具有大量特征或特征空间较大的数据集,算法的时间复杂度很高,需要消耗大量的计算资源。
  • 2. 由于C4.5算法是基于贪心策略构建决策树的,可能会导致决策树的局部最优解与全局最优解不一致,从而影响分类准确性。
  • 3. 对于存在分类不平衡问题的数据集,可能会导致决策树生成过程中的类别偏差,从而影响分类准确性。

心得感受

CSDN的AI写作相当牛了,并且操作方便;

回答速度也是相当可观的,就是总会一卡一卡的,不过无伤大雅;

写代码的能力,我也是很认可的,比我强多了;

就我而言,平时想要需求人工智能的帮助的话,用这个创作助手就完全够用了;

就目前而言,大多数的语言模型的回答模式都差不多,类似于一个模板;

如果与chatgpt3.5相比的话,我还真比不出来,感觉差不多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/20703.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

selenium学习(二)

第八课–元素定位八种方式 要想操作Web界面上的元素,首先要定位到该元素,Selenium提供了定位元素的API,这些方法都被定义在WebDriver类中,浙西额方法都是以find开头。 方法名称描述可能带来的问题find_element_by_id通过id定位元…

免费ChatGDT插件《 WeTab 新标签页》

1、打开Microsoft Edge,选择右上角的三个点点,选择扩展 2、自动跳出这个小框框,选择管理扩展 3、往下拉、拉到最下边,找到如下图,并点击进去 4、进去之后再左侧搜索框中输入:WeTab 新标签 我这里是以及下载…

基于TF-IDF+Tensorflow+PyQt+孪生神经网络的智能聊天机器人(深度学习)含全部Python工程源码及模型+训练数据集

目录 前言总体设计系统整体结构图系统流程图孪生神经网络结构图 运行环境Python 环境TensorFlow 环境 模块实现1. 数据预处理2. 创建模型并编译3. 模型训练及保存4. 模型应用 系统测试1. 训练准确率2. 测试效果3. 模型生成 工程源代码下载其它资料下载 前言 本项目利用TF-IDF&…

喜羊羊贴吧顶帖软件实战教学

喜羊羊贴吧顶帖软件实战教学#贴吧顶帖#贴吧推广 大家好,欢迎来到百收网SEO这期视频,给大家更新一下百度贴最新的一个顶帖视频教程。首先我们今天用的顶帖软件是我们的喜羊羊173 的一个版本,软件的话在我们的群文件去下载,就是我们…

贴吧发布软件<神奇的>使用教程实战教学

贴吧发布软件<神奇的>使用教程实战教学.百度贴吧全自动发帖软件#贴吧发帖软件 各位同学大家好&#xff0c;欢迎回到百收SEO网络&#xff0c;这节课是我们百度贴软件自动发帖的一个实战教学的一个公开课&#xff0c;发帖软件还是我们用的一个喜羊羊的工具箱&#xff0c;然…

讯飞星火 VS 文心一言:谁是中文大语言模型的TOP1?

在百度发布文心一言一个多月后,科大讯飞也发布了自己的大模型“讯飞星火大模型”。本篇博客就测评一下这两个在中文圈最受好评的大语言模型,顺便辅以ChatGPT为参考。大家一起来看看到底谁是中文大语言模型的TOP1? 目录 体验网址 1、旅游攻略 2、数理逻辑题 3、故事创作…

大学生实践| 微软ATP“师徒制”AI实战项目收获满满!

ChatGPT在极短时间内掀起了一轮AI狂潮&#xff0c;AI数据、AI大模型、AIGC……对我们AI实践项目感兴趣的同学也越来越多&#xff01;微软(亚洲)互联网工程院下属的微软ATP为大学生们提供了丰富的企业级实践项目。 2个月内&#xff01;本期优秀的Chen同学在微软AI工程师团队带领…

1天训完45亿参数大模型!高校计算能力首次比肩科技巨头

衡宇 发自 凹非寺量子位 | 公众号 QbitAI “第一次&#xff0c;高校拥有了和科技巨头一样的计算能力。” 说这句话的人是中国工程院院士、阿里云创始人王坚。 他口中让高校计算能力倍增的&#xff0c;是复旦大学刚刚发布的云上科研智算平台。 名为CFFF&#xff08;Computing fo…

介绍一下IEEE PHM2012数据集

ChatGPT: IEEE PHM2012数据集是一个用于轴承剩余寿命预测的公共数据集&#xff0c;由IEEE联合无损检测协会组织。该数据集是通过对一种在机械系统中广泛使用的轴承进行可控实验得到的。 数据集包含四个通道的振动数据和一个温度信号&#xff0c;每个通道的采样率为20kHz&…

2022年天马杯新闻文本扩充生成赛道冠军方案分享

Z Lab数据实验室成员 HeapOverflow 01 前言 去年又摸了一个比赛&#xff0c;这次基本上是自己主导完成大部分建模和优化工作的了。这次能拿下第一&#xff0c;一方面是比赛参加的人比较少&#xff08;也是因为限制学生参加&#xff09;来卷的大概也就几十个人&#xff0c;另一方…

百万网友AI导师李沐离职投身大模型,B站“组会”还会有吗?(文末赠书)

目录 1 求学之路&#xff1a;全能学霸2 AI之路&#xff1a;与深度学习结缘3 一战封神&#xff1a;亚马逊首席科学家4 动手学习深度学习 前阵子“沐神”李沐离开亚马逊、加入创业公司BosonAI的消息&#xff0c;引起了业内比较广泛的讨论。 而BosonAI的创始人正好是他的博士生导师…

揭秘 “移动云杯”高校赛道——法律科技创新子赛道

【赛道介绍】 法律科技创新大赛以人工智能、大数据等技术为基础&#xff0c;拓展政法工作现代化中的创新应用&#xff0c;加强科学的方法论和先进的技术手段与传统政法业务的融合&#xff0c;搭建法律科技领域思想、技术、应用的交流实践平台&#xff0c;助推法律科技产业人才培…

资源分享(nlp、kaggle、pytorch、datawhale)

文章目录 一、.机器学习、深度学习库、优秀课程1.1 资源库1.2 优秀课程1.3 优秀作者、公众号 二、NLP相关2.1 NLP相关2.2 transformer资源2.3 Hugging Face&#xff1a;2.4 其它文章 三、CV相关四、数据挖掘4.1 pandas、sns工具类 五、kaggle赛事5.1 NLP赛事 六、 其它赛事&…

chatgpt赋能python:自动填表程序:让烦人的表格填写工作自动化

自动填表程序&#xff1a;让烦人的表格填写工作自动化 随着互联网的发展&#xff0c;填写表格已经成为我们日常生活和工作中不可避免的一部分。不管是在线申请、调查问卷还是财务报表&#xff0c;表格的填写让人感到烦恼而且耗费时间。为了解决填表的烦恼&#xff0c;python的…

chatgpt赋能python:Python如何自动发邮件

Python 如何自动发邮件 Python 是世界上最受欢迎的编程语言之一&#xff0c;Python 可以实现各种各样的功能&#xff0c;自动化发邮件也是其中之一。本文将介绍 Python 的邮件发送库和如何自动发送邮件&#xff0c;希望能为读者提供帮助。 为什么要自动发邮件&#xff1f; 自…

Python某地区二手房房价数据分析

房价数据分析 数据简单清洗 data.csv 数据显示 # 导入模块 import pandas as pd # 导入数据统计模块 import matplotlib # 导入图表模块 import matplotlib.pyplot as plt # 导入绘图模块# 避免中文乱码 matplotlib.rcParams[font.sans-serif] [SimHei] # 设置字体为…

house_price(房价预测)

最近在阅读一些AI项目&#xff0c;写入markdown&#xff0c;持续更新&#xff0c;算是之后也能回想起做法 项目 https://github.com/calssion/Fun_AI Kaggle--House Prices: Advanced Regression Techniques Kaggle address(网址)&#xff1a;https://www.kaggle.com/c/house…

kaggle房价预测

通过前面的学习&#xff0c;实战一个房价预测项目&#xff0c;kaggle房价预测&#xff0c;该数据集涵盖了2006-2010年期间亚利桑那州埃姆斯市的房价&#xff0c;包含了很多特征。 导入所需的包 %matplotlib inline import pandas as pd import torch import numpy as np from…

Pandas与ChatGPT的超强结合,爆赞!

来自公众号&#xff1a;数据STUDIO Python Pandas是一个为Python编程提供数据操作和分析功能的开源工具包。这个库已经成为数据科学家和分析师的必备工具。它提供了一种有效的方法来管理结构化数据(Series和DataFrame)。 在人工智能领域&#xff0c;Pandas经常用于机器学习和深…

一个浏览器插件畅享Chat GPT,还有更多实用小组件、高清壁纸

即使chatGPT已经火爆了一段时间了&#xff0c;但它仍然是目前备受关注的话题。而在国内使用需要一定的成本&#xff0c;许多人甚至根本找不到注册的办法&#xff0c;因此也衍生了不少代注册服务。但其实国内也有不少可以体验和chatGPT几乎同样服务的办法&#xff0c;这篇文章就…