使用Matlab建立决策树

综述

除了神经网络模型以外,树模型及基于树的集成学习模型是较为常用的效果较好的预测模型。我们以下先构建一个决策树模型。

决策树算法的优点如下:1、 决策树易于理解和实现,用户在学习过程中不需要了解过多的背景知识,其能够直接体现数据的特点,只要通过适当的解释,用户能够理解决策树所表达的意义。2、 速度快,计算量相对较小,且容易转化成分类规则。只要沿着根节点向下一直走到叶子节点,沿途分裂条件是唯一且确定的。决策树算法的缺点则主要是在处理大样本集时,易出现过拟合现象,降低分类的准确性。

在MATLAB 中,为方便用户对决策树算法的使用,MATLAB 中针对分类决策树和回归决策树分别封装了两个函数:fitctree 和 fitrtree。由于分类决策树和回归决策树两者具有极大的相似性,因此 fitctree 和 fitrtree 两者的使用方法也基本一致。

分类决策树 fitctree 函数在决策树进行分支时,采用的是 CART 方法。其使用方法为 TREE = fitrtree(TBL,Y),其中,TBL 为样本属性值矩阵,Y 为样本标签。利用 MATLAB 中自带的统计3种鸢尾属样本数据 fisheriris。Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。

Step 1: 打开matlab,新建脚本

在MATLAB 中,输入以下代码

运行后显示结果如图:

Step 2: 查看属性

MATLAB 命令行窗口显示结果

分别单击上述 MATLAB 命令行窗口中的 Properties 和 Methods 超链接,在窗口中分别显示如下所示。单击 Properties 超链接显示的类 Classification Tree 的所有(可理解为生成决策树)属性,是指通过 fitctree 训练得到的树的所有属性,部分属性值可在 fitctree 函数调用时进行定义,如上述程序中的 PredictorNames(描述各属性的名称)等,另外一部分则是对形成的树的具体属性描述,如 NumNodes(描述各属性的名称)等。由于各属性是属于训练成的决策树,因此当需要观测和调用属性值时,可采用 t.XXX 调用,其中 t 表示训练生成的树的名称,XXX 表示属性名称。

单击 Methods 超链接显示的是类 Classification Tree(可理解为生成的决策树)的操作方法。

对于属性和方法的具体含义及使用方法,可通过 help XXX 查询,XXX 为属性或方法名。

Step 3: 对决策树进行剪枝操作

下面介绍决策树的剪枝方法(Prune)和观测方法(View)的基本使用方法。

其中,t1 表示原决策树,t2 表示剪枝后的新决策树,‘level’ 表示按照层进行剪枝,levelvalue 表示剪掉的层数。‘nodes’ 表示按照借点剪枝,nodes 表示剪掉该结点后的所有枝。view(t2,‘Model’,‘graph’)表示以图形化方式显示 t2 决策树。

针对上述的决策树,进行剪枝。在 MATLAB 命令行窗口中输入:

经过裁剪后的决策树如下图所示:

Step 4: 利用已建好的决策树进行预测

经过上述对决策树的剪枝等操作后,就形成了一个具有使用价值的决策树,在 MATLAB 命令行窗口中输入:

运行后输出结果如下:

上图表示通过决策树分类后,属性值为[1 0.2 0.4 2] 的鸢尾属植物 setosa。

%% CART决策树算法Matlab实现
clear all;
close all;
clc;
load fisheriris % 载入样本数据
t = fitctree(meas, species, 'PredictorNames', {'SL' 'SW' 'PL' 'PW'}) % 定义四种属性显示名称
view(t) % 在命令行窗口用文本显示决策树结构
view(t, 'Mode', 'graph') % 图形显示决策树结构

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

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

相关文章

安卓主板_基于联发科MTK MT8788平台平板电脑方案_安卓核心板开发板定制

联发科MT8788安卓核心板平台介绍: MTK8788设备具有集成的蓝牙、fm、wlan和gps模块,是一个高度集成的基带平台,包括调制解调器和应用处理子系统,启用LTE/LTE-A和C2K智能设备应用程序。该芯片集成了工作在2.0GHz的ARM Cortex-A73、最…

思科模拟器路由器配置实验

一、实验目的 了解路由器的作用。掌握路由器的基本配置方法。掌握路由器模块的使用和互连方式。 二、实验环境 设备: 2811 路由器 1 台计算机 2 台Console 配置线 1 根网线若干根 拓扑图:实验拓扑图如图 8-1 所示。计算机 IP 地址规划:如表…

Python酷库之旅-第三方库Pandas(206)

目录 一、用法精讲 961、pandas.IntervalIndex.mid属性 961-1、语法 961-2、参数 961-3、功能 961-4、返回值 961-5、说明 961-6、用法 961-6-1、数据准备 961-6-2、代码示例 961-6-3、结果输出 962、pandas.IntervalIndex.length属性 962-1、语法 962-2、参数 …

【前端】CSS入门笔记+案例

目录 CSS css 的语法 1.字体大小 font-size 2.背景颜色 backgrount-color 3.背景的宽高 w h css的三种引入方式 1.内嵌式 2.外联式 3.行内式 选择器 1.标签选择器 2.类选择器 3.id选择器 4.通配符选择器 字体和文本样式 1.字体样式 1.1字体大小 font-size 1.…

java对接微信公众号API,实现扫码关注公众号,触发多条消息回复

一、准备工作 1. 依赖库 这里使用的是binarywang的Wxjava 库&#xff0c;源码地址&#xff1a;https://github.com/binarywang/WxJava。截止发稿前最新版本是4.6.7.B&#xff0c;我采用的是4.5.0版本。 <dependency><groupId>com.github.binarywang</groupId…

一文学习Android中的Property

在 Android 系统中&#xff0c;Property 是一种全局的键值对存储系统&#xff0c;允许不同组件和进程间以轻量级的方式进行数据传递。它主要用于系统配置、状态标识等场景&#xff0c;使得不同进程能够通过属性的设置或获取来通信。property 的核心特性是快速、高效&#xff0…

网络编程——Python简单TCP通信功能代码实践

这里写目录标题 Python简单TCP通信功能代码实践阅读本博客前需准备的几个问题1. 网络通信的机制是什么&#xff1f;2. 什么是python进行网络编程&#xff1f;3. IP地址和端口是什么&#xff1f; 一个简单的TCP通信功能示例&#xff1a;client端.pysever端.pyPYCHARM运行结果 Py…

qt QGesture详解

1、概述 QGesture 是 Qt 框架中用于处理多点触控和手势识别的类。它封装了用户输入的手势信息&#xff0c;如触摸、滑动、捏合、旋转等&#xff0c;使得开发者能够轻松地实现复杂的手势交互功能。QGesture 类本身是一个抽象基类&#xff0c;不能直接实例化&#xff0c;而是通过…

基于C语言——跑得快扑克牌游戏开发指南

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 ✨特色专栏&#xff1a…

7+纯生信,单细胞识别细胞marker+100种机器学习组合建模,机器学习组合建模取代单独lasso回归势在必行!

影响因子&#xff1a;7.3 研究概述&#xff1a; 皮肤黑色素瘤&#xff08;SKCM&#xff09;是所有皮肤恶性肿瘤中最具侵袭性的类型。本研究从GEO数据库下载单细胞RNA测序&#xff08;scRNA-seq&#xff09;数据集&#xff0c;根据原始研究中定义的细胞标记重新注释各种免疫细胞…

丹摩征文活动 | 0基础带你上手经典目标检测模型 Faster-Rcnn

文章目录 &#x1f34b;1 引言&#x1f34b;2 平台优势&#x1f34b;3 丹摩平台服务器配置教程&#x1f34b;4 实操案例&#xff08; Faster-rcnn 项目&#xff09;&#x1f34b;4.1 文件处理&#x1f34b;4.2 环境配置&#x1f34b;4.3 训练模型&#x1f34b;4.4 数据保存并导…

【GPTs】Get Simpsonized:一键变身趣味辛普森角色

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | GPTs应用实例 文章目录 &#x1f4af;GPTs指令&#x1f4af;前言&#x1f4af;Get Simpsonized主要功能适用场景优点缺点使用方式 &#x1f4af;小结 &#x1f4af;GPTs指令 中文翻译&#xff1a; 指令保护和安全规则&…

【C++】 C++游戏设计---五子棋小游戏

1. 游戏介绍 一个简单的 C 五子棋小游戏 1.1 游戏规则&#xff1a; 双人轮流输入下入点坐标横竖撇捺先成五子连线者胜同一坐标点不允许重复输入 1.2 初始化与游戏界面 初始化界面 X 输入坐标后 O 输入坐标后 X 先达到胜出条件 2. 源代码 #include <iostream> #i…

树-好难-疑难_GPT

// // Created by 徐昌真 on 2024/11/10. // #include <iostream> using namespace std;template<typename T> struct ListNode{ //新建链表节点T data; //指向下一个子节点 ListNode< TreeNode<T>* > childHead; 这里的 T 是TreeNde类型的…

Suricata

02-Suricata 一 ICMP流量预警 一条ICMP报文有四个重要内容&#xff0c;可与相应的ICMP关键字相匹配。它们是&#xff1a;消息的类型、代码、ID和序列。 通过ICMP的type进行匹配 alert icmp any any <> any any (msg:"icmp流量预警";itype:8;threshold:type t…

分享一些Kafka集群优化的最佳实践?

以下是一些 Kafka 集群优化的最佳实践&#xff1a; 复制策略配置&#xff1a; 在 server.properties 文件中配置 default.replication.factor 来指定每个主题的默认副本因子&#xff0c;以及 min.insync.replicas 来配置每个分区中必须要保持同步的最小副本数。这可以提高 Kafk…

web前端动画按钮(附源代码)

效果图 源代码 HTML部分 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> …

实操篇:容器服务如何启动系统?

容器服务如何启动系统&#xff1f;容器服务的启动主要依赖Docker和Kubernetes。Docker通过镜像创建和管理容器&#xff0c;支持多种重启策略以确保容器稳定运行。Kubernetes则负责自动化部署、扩展和管理容器化应用&#xff0c;其核心是Pod&#xff0c;包含一个或多个容器。用户…

conda与pip 安装软件包的 代理/换源 解决方案

方案0&#xff1a;终端set proxy set http_proxyhttp://127.0.0.1:7890 set https_proxyhttps://127.0.0.1:7890 export http_proxyhttp://127.0.0.1:7890 export https_proxyhttps://127.0.0.1:7890查看 set | grep proxy echo $https_proxy区别 使用set可以设置和查看变量…