matlab实现id3,MATLAB简单实现ID3

再看《MATLAB数据分析与挖掘实战》,简单总结下今天看到的经典的决策树算法——ID3.

ID3:在决策树的各级节点上,使用信息增益的方法作为属性的选择标准,来帮助确定生成每个节点时所应采取的合适属性。

关于信息增益,知乎上这个回答也讲的很不错。信息增益=熵 - 条件熵,信息增益越大,说明该条件对事件确定性的影响越大。所以,在决策树中,我们将信息增益值作为测试属性。把测试属性取值相同的样本划为同一个子样本集。

基本流程:

·对当前样本,计算所有属性的信息增益,并将信息增益作为测试属性;

·若子样本集的类别属性只含有单个属性,则分支为叶子节点,判断其属性值并贴上相应的,然后返回调用处;否则对子样本集递归调用算法。

原理看起来有点复杂,其实用MATLAB实现起来及其简单:

%% 使用ID3决策树算法预测销量高低

clear;

% 参数初始化

inputfile = ‘F:\Techonolgoy\MATLAB\file\MTALAB数据分析与挖掘实战\Datasets\chapter5\chapter5\示例程序\data\sales_data.xls‘; % 销量及其他属性数据

%% 数据预处理

disp(‘正在进行数据预处理...‘);

[matrix,attributes_label,attributes] = id3_preprocess(inputfile);

%% 构造ID3决策树,其中id3()为自定义函数

disp(‘数据预处理完成,正在进行构造树...‘);

tree = id3(matrix,attributes_label,attributes);

%% 打印并画决策树

[nodeids,nodevalues] = print_tree(tree);

tree_plot(nodeids,nodevalues);

disp(‘ID3算法构建决策树完成!‘);

ID3缺点:

·偏向选择取值最多的即所谓的高度分支属性,不一定最优。

·只能处理离散属性。

原文:http://www.cnblogs.com/buzhizhitong/p/5880184.html

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

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

相关文章

python字符串数组_python将字符串转换成数组的方法

Python这篇文章主要介绍了Python __setattr__、 __getattr__、 __delattr__、__call__用法示例,本文分别对这几个魔法方法做了讲解,需要的朋友可以参考下 ... junjie4882019-11-22 Python这篇文章主要介绍了Python实现list反转的方法,实例总结了关于list的各种较为常见的操作技…

团队项目介绍

身为该团队的项目负责人,简单介绍下我们团队的项目以及分工。 我们团队共有10个人,团队名称:Eastwood。 团队项目:开发一个网页,里面包含几个小游戏,通过玩的游戏判断人的性格。 团队项目开始日期&#xff…

python fillna,Pandas之Fillna填充缺失数据的方法

约定:import pandas as pdimport numpy as npfrom numpy import nan as NaN填充缺失数据fillna()是最主要的处理方式了。df1pd.DataFrame([[1,2,3],[NaN,NaN,2],[NaN,NaN,NaN],[8,8,NaN]])df1代码结果:01201.02.03.01NaNNaN2.02NaNNaNNaN38.08.0NaN用常数…

vsc写vue生成基本代码快捷键_基于vue2.X的webpack基本配置,教你手动撸一个webpack4的配置...

webpack说复杂也不复杂。不复杂,核心概念不外乎是entry, output, loader, plugins。webpack4还新增了optimization选项,用于代码分割和打包优化。现在webpack官网文档已经写的挺棒了。而当你真正开始手写一个webpack.config.js的时候,你就会发…

几款效率神器助你走上人生巅峰

一、背景 在我的工作和生活中,我一直都很注重效率工具的使用,这么些年下来也积累好几款很不错,但是又不为大多数人所熟知的软件工具,我用起来得心应手,很不错。那我就像在此给大家做个分享,希望你们都能多多…

自动部署 php,Jenkins实现PHP的自动部署

用HTML5 CANVAS做自定义路径的动态效果图片!最近对HTML5开始感兴趣了,实现的效果如下图,大家可以从代码里换掉图片 我用的是canvas里面的2d绘图,其中上图的路径是网上在线绘制的,我太懒了,哈哈 下面是网址: http://www.vic ...开源的EtherCAT Master简介EtherCAT的主…

macos下载的安装包在哪里_macbook任意降级,为您带来mac os完美降级教程

最近有许多用户反映升级了最新的系统出现了各种奇葩问题,更关键的是,很多常用(专业)软件不能使用了。因此有许多用户想要降级,现在macdown小编为您带来mac os完美降级教程,有需要的赶紧收藏啦!第…

Java Lambda表达

Java 8 lambda表达式示例 我个人对Java 8发布非常激动,尤其是lambda表达式和流API。越来越多的了解它们,我能写出更干净的代码。虽然一开始并不是这样。第一次看到用lambda表达式写出来的Java代码时,我对这种神秘的语法感到非常失望&#xff…

freebsd查询php5的版本,FreeBSD下查看各软件版本命令

查看FreeBSD版本: uname -aroot# uname -aFreeBSD power 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Mon Jul 19 02:36:49 UTC 2010 rootmason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64查看apache版本: apachectl -vroot#apachectl -vServ…

日期 日历 时区 地区 格式化 API 案例 MD

Markdown版本笔记我的GitHub首页我的博客我的微信我的邮箱MyAndroidBlogsbaiqiantaobaiqiantaobqt20094baiqiantaosina.com目录 目录常用案例判断是今天还是明天计算两个日期间相差几天增加或减少一定的时间判断缓存是否过期获取一个时间,要求当月有31天SimpleDateF…

kodi刮削器 中文_教你PLEX插件播放4K不能使用KODI解码导致卡顿的解决办法

文章作者Hao4K用户nothero自从买了这个索尼9500g,三天两头的出问题,而且还经常重启,经常卡顿。大法的画质确实不错,但是这系统稳定性实在是不敢恭维...最近装了一个KODI-PLEX插件,安利安利{:4_96:},画面实在…

php js分页插件怎么引用,js分页展示控件,传入简单参数就能使用的分页效果控件...

kkpager v1.3js分页展示控件,传入简单参数就能使用的分页效果控件准备工作,引入js、cssHTML DOM容器调用方法1、使用link模式getLink 参数需要按需要重写。2、使用click模式(自定义跳转函数)click 参数需要按需要重写,而getHref一般需要配置。必选参数pno 当前页码t…

python下载文件保存_从URL下载文件并将其保存在Python文件夹中

尝试使用stream选项:import os import requests def download(url: str, dest_folder: str): if not os.path.exists(dest_folder): os.makedirs(dest_folder) # create folder if it does not exist filename url.split(/)[-1].replace(" ", "_&qu…

Delphi TXLSReadWriteII导出Excel

TXLSReadWriteII导出Excle (有点复杂,可以自己简化一下,直接从项目中抓取的)procedure TformSubReport.DataToExcel(_Item: Integer; _Obj: TObject); //导出Exclevari, j, k: Integer;aVendorObj: TVendor;aEnterpriseObj: TEn…

python网络编程项目_Python网络编程攻略

第1章套接字、IPv4和简单的客户端/服务器编程 本章攻略: 打印设备名和IPv4地址 获取远程设备的IP地址 将IPv4地址转换成不同的格式 通过指定的端口和协议找到服务名 主机字节序和网络字节序之间相互转换 设定并获取默认的套接字超时时间 优雅地处理套接字错误 修改套…

玩下软工项目,第一轮--全局Context的获取,SQLite的建立与增删改查,读取用户通话记录信息...

项目的Github地址:https://github.com/ggrcwxh/LastTime 采用基于git的多人协作开发模式 软件采用mvc设计模式,前端这么艺术的事我不太懂,交给斌豪同学去头疼了。第一轮先实现查询通话记录返回对应号码上一次的通话时间。 真机测试下的效果图…

red hat linux 安装oracle10g vm,oracle 10g 在 RED HAT ENTERPRISE LINUX 5下的安装

oracle 10g 在 RED HAT ENTERPRISE LINUX 5下的安装ORACLE 10G在LINUX的安装:先上来两张图:DBA是努力的方向,ORACLE DBA包罗万象,连LINUX/UNIX都搞不定,还弄P个ORACLE啊.两部分:1.RED HAT ENTERPRISE LINUX 5的安装难点(对于现在的我来说):1.1YUM本地源的配置;网络有相关资料,不…

jvm垃圾回收机制_深入理解JVM的垃圾回收机制

​如何判断对象已“死”Java堆中存放着几乎所有的对象实例,垃圾回收器在堆进行垃圾回收前,首先要判断这些对象那些还存活,那些已经“死去”。判断对象是否已“死”有如下几种算法:1引用计数法引用计数法描述的算法为:给…

EF sqlite3报错 System.Data.Entity.Core.EntityException: 在提供程序连接上启动事务时出错。有关详细信息,请参阅内部异常。...

问题:sqlite3使用ef框架操作数据库报错 问题原因:数据库文件没有访问权限 结局方案:可以将数据库文件所在的文件夹的访问权限添加Everyone用户权限。 错误:"System.Data.Entity.Core.EntityException: 在提供程序连接上启动事…

oracle job定时报错,Oracle Job定时任务的使用详解

Oracle中的job能为你做的就是在你规定的时间格式里执行存储过程,定时执行一个任务 。下面是一个小案例,定时每15分钟向一张表插入一条数据一、步骤11.创建一张测试表-- Create tablecreate table A8(a1 VARCHAR2(500))tablespace DSP_DATApctfree 10init…