用旧版本Matlab训练的 classregtree类的决策树model 在新版Matlab无法使用的解决方法

背景

  • 想把原来r2015a版本的代码升级到r2021b,用2021b运行原来的代码时,报错
    在这里插入图片描述
  • 搜索发现R2019a中已经去除了classregtree函数和classregtree类
    在这里插入图片描述
    在这里插入图片描述

解决方法

新版本的Matlab load(‘TreeModel.mat’)后,查看TreeModel的值

val = 分类的决策树1  if SL<5.45 then node 2 elseif SL>=5.45 then node 3 else setosa2  if SW<2.8 then node 4 elseif SW>=2.8 then node 5 else setosa3  if SL<6.15 then node 6 elseif SL>=6.15 then node 7 else virginica4  class = versicolor5  class = setosa6  if SW<3.45 then node 8 elseif SW>=3.45 then node 9 else versicolor7  if SL<7.05 then node 10 elseif SL>=7.05 then node 11 else virginica8  if SL<5.75 then node 12 elseif SL>=5.75 then node 13 else versicolor9  class = setosa
10  if SW<2.4 then node 14 elseif SW>=2.4 then node 15 else virginica
11  class = virginica
12  class = versicolor
13  if SW<3.1 then node 16 elseif SW>=3.1 then node 17 else versicolor
14  class = versicolor
15  if SL<6.95 then node 18 elseif SL>=6.95 then node 19 else virginica
16  if SW<2.95 then node 20 elseif SW>=2.95 then node 21 else versicolor
17  class = versicolor
18  if SW<3.15 then node 22 elseif SW>=3.15 then node 23 else virginica
19  class = versicolor
20  class = versicolor
21  class = virginica
22  if SL<6.55 then node 24 elseif SL>=6.55 then node 25 else virginica
23  class = virginica
24  if SW<2.95 then node 26 elseif SW>=2.95 then node 27 else virginica
25  if SL<6.65 then node 28 elseif SL>=6.65 then node 29 else versicolor
26  if SL<6.45 then node 30 elseif SL>=6.45 then node 31 else virginica
27  class = virginica
28  class = versicolor
29  if SW<2.65 then node 32 elseif SW>=2.65 then node 33 else virginica
30  if SW<2.85 then node 34 elseif SW>=2.85 then node 35 else virginica
31  class = versicolor
32  class = virginica
33  if SW<2.9 then node 36 elseif SW>=2.9 then node 37 else versicolor
34  class = virginica
35  class = versicolor
36  class = versicolor
37  class = virginica

TreeModel共有37个nodes,
在这里插入图片描述
决策树model就是根据特征值是否满足条件 进而判断哪一类别,因此,把model改成判断的function就可以重新调用了,每个node对应一个子function,共37个子function


function result = TreeModelFunction(Features)
% 分类的决策树
%  1  if SL<5.45 then node 2 elseif SL>=5.45 then node 3 else setosa
%  2  if SW<2.8 then node 4 elseif SW>=2.8 then node 5 else setosa
%  3  if SL<6.15 then node 6 elseif SL>=6.15 then node 7 else virginica
%  4  class = versicolor
%  5  class = setosa
%  6  if SW<3.45 then node 8 elseif SW>=3.45 then node 9 else versicolor
%  7  if SL<7.05 then node 10 elseif SL>=7.05 then node 11 else virginica
%  8  if SL<5.75 then node 12 elseif SL>=5.75 then node 13 else versicolor
%  9  class = setosa
% 10  if SW<2.4 then node 14 elseif SW>=2.4 then node 15 else virginica
% 11  class = virginica
% 12  class = versicolor
% 13  if SW<3.1 then node 16 elseif SW>=3.1 then node 17 else versicolor
% 14  class = versicolor
% 15  if SL<6.95 then node 18 elseif SL>=6.95 then node 19 else virginica
% 16  if SW<2.95 then node 20 elseif SW>=2.95 then node 21 else versicolor
% 17  class = versicolor
% 18  if SW<3.15 then node 22 elseif SW>=3.15 then node 23 else virginica
% 19  class = versicolor
% 20  class = versicolor
% 21  class = virginica
% 22  if SL<6.55 then node 24 elseif SL>=6.55 then node 25 else virginica
% 23  class = virginica
% 24  if SW<2.95 then node 26 elseif SW>=2.95 then node 27 else virginica
% 25  if SL<6.65 then node 28 elseif SL>=6.65 then node 29 else versicolor
% 26  if SL<6.45 then node 30 elseif SL>=6.45 then node 31 else virginica
% 27  class = virginica
% 28  class = versicolor
% 29  if SW<2.65 then node 32 elseif SW>=2.65 then node 33 else virginica
% 30  if SW<2.85 then node 34 elseif SW>=2.85 then node 35 else virginica
% 31  class = versicolor
% 32  class = virginica
% 33  if SW<2.9 then node 36 elseif SW>=2.9 then node 37 else versicolor
% 34  class = virginica
% 35  class = versicolor
% 36  class = versicolor
% 37  class = virginica
%
% 注意: Features 是单个样本的特征值,大小为1*2
%       这个TreeModelFunction根据特征值判断该样本属于以下三类中的哪一类:'setosa' 'virginica' 'versicolor'
%       TreeModelFunction函数只能判断单个样本的类别,如要判断多个样本的类别,请循环调用TreeModelFunction函数
% 例子:
%    >> result = TreeModelFunction([4.5 2.5])
% 
%       result =
% 
%           1×1 cell 数组
% 
%           {'versicolor'}SL = Features(1);
SW = Features(2);result = node01(SL,SW);end% --------------------------------------------------------------------------
function result = node01(SL,SW)
if SL<5.45 result = node02(SL,SW); 
elseif SL>=5.45 result = node03(SL,SW); 
else result{1} = 'setosa';
end
endfunction result = node02(SL,SW)
if SW<2.8  result = node04(SL,SW); 
elseif SW>=2.8  result = node05(SL,SW); 
else result{1} = 'setosa';
end
endfunction result = node03(SL,SW)
if SL<6.15  result = node06(SL,SW); 
elseif SL>=6.15  result = node07(SL,SW); 
else result{1} = 'virginica';
end
endfunction result = node04(SL,SW)
result{1} = 'versicolor';
endfunction result = node05(SL,SW)
result{1} = 'setosa';
endfunction result = node06(SL,SW)
if SW<3.45  result = node08(SL,SW); 
elseif SW>=3.45  result = node09(SL,SW); 
else result{1} = 'versicolor';
end
endfunction result = node07(SL,SW)
if SL<7.05  result = node10(SL,SW); 
elseif SL>=7.05  result = node11(SL,SW); 
else result{1} = 'virginica';
end
endfunction result = node08(SL,SW)
if SL<5.75  result = node12(SL,SW); 
elseif SL>=5.75  result = node13(SL,SW); 
else result{1} = 'versicolor';
end
endfunction result = node09(SL,SW)
result{1} = 'setosa';
endfunction result = node10(SL,SW)
if SW<2.4  result = node14(SL,SW); 
elseif SW>=2.4  result = node15(SL,SW); 
else result{1} = 'virginica';
end
endfunction result = node11(SL,SW)
result{1} = 'virginica';
endfunction result = node12(SL,SW)
result{1} = 'versicolor';
endfunction result = node13(SL,SW)
if SW<3.1  result = node16(SL,SW); 
elseif SW>=3.1  result = node17(SL,SW); 
else result{1} = 'versicolor';
end
endfunction result = node14(SL,SW)
result{1} = 'versicolor';
endfunction result = node15(SL,SW)
if SL<6.95  result = node18(SL,SW); 
elseif SL>=6.95  result = node19(SL,SW); 
else result{1} = 'virginica';
end
endfunction result = node16(SL,SW)
if SW<2.95  result = node20(SL,SW); 
elseif SW>=2.95  result = node21(SL,SW); 
else result{1} = 'versicolor';
end
endfunction result = node17(SL,SW)
result{1} = 'versicolor';
endfunction result = node18(SL,SW)
if SW<3.15  result = node22(SL,SW); 
elseif SW>=3.15  result = node23(SL,SW); 
else result{1} = 'virginica';
end
endfunction result = node19(SL,SW)
result{1} = 'versicolor';
endfunction result = node20(SL,SW)
result{1} = 'versicolor';
endfunction result = node21(SL,SW)
result{1} = 'virginica';
endfunction result = node22(SL,SW)
if SL<6.55  result = node24(SL,SW); 
elseif SL>=6.55  result = node25(SL,SW); 
else result{1} = 'virginica';
end
endfunction result = node23(SL,SW)
result{1} = 'virginica';
endfunction result = node24(SL,SW)
if SW<2.95  result = node26(SL,SW); 
elseif SW>=2.95  result = node27(SL,SW); 
else result{1} = 'virginica';
end
endfunction result = node25(SL,SW)
if SL<6.65  result = node28(SL,SW); 
elseif SL>=6.65  result = node29(SL,SW); 
else result{1} = 'versicolor';
end
endfunction result = node26(SL,SW)
if SL<6.45  result = node30(SL,SW); 
elseif SL>=6.45  result = node31(SL,SW); 
else result{1} = 'virginica';
end
endfunction result = node27(SL,SW)
result{1} = 'virginica';
endfunction result = node28(SL,SW)
result{1} = 'versicolor';
endfunction result = node29(SL,SW)
if SW<2.65  result = node32(SL,SW); 
elseif SW>=2.65  result = node33(SL,SW); 
else result{1} = 'virginica';
end
endfunction result = node30(SL,SW)
if SW<2.85  result = node34(SL,SW); 
elseif SW>=2.85  result = node35(SL,SW); 
else result{1} = 'virginica';
end
endfunction result = node31(SL,SW)
result{1} = 'versicolor';
endfunction result = node32(SL,SW)
result{1} = 'virginica';
endfunction result = node33(SL,SW)
if SW<2.9  result = node36(SL,SW); 
elseif SW>=2.9  result = node37(SL,SW); 
else result{1} = 'versicolor';
end
endfunction result = node34(SL,SW)
result{1} = 'virginica';
endfunction result = node35(SL,SW)
result{1} = 'versicolor';
endfunction result = node36(SL,SW)
result{1} = 'versicolor';
endfunction result = node37(SL,SW)
result{1} = 'virginica';
end

例子:

例子:>> result = TreeModelFunction([4.5 2.5])result =1×1 cell 数组{'versicolor'}

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

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

相关文章

Redis第一关之常规用法

简介 Redis不用多说&#xff0c;已经火了很多年了&#xff0c;也用了很多年了。现在做一些归纳总结。 这篇文章主要介绍Redis的常规知识及用法&#xff0c;包括数据结构、使用场景、特性、过期机制、持久化机制。 Redis与Mysql Mysql是一款基于磁盘的关系型SQL数据库。 Redi…

Deep Learning with OpenCV DNN Module介绍

Deep Learning with OpenCV DNN Module介绍 1. 源由2. 为什么/什么是OpenCV DNN Module?2.1 支持的不同深度学习功能2.2 支持的不同模型2.3 支持的不同框架 3. 如何使用OpenCV DNN模块3.1 使用从Keras和PyTorch等不同框架转换为ONNX格式的模型3.2 使用OpenCV DNN模块的基本步骤…

MySQL学习Day18——存储引擎

存储引擎就是指表的类型&#xff0c;它的功能就是接收上层传下来的指令&#xff0c;然后对表中的数据进行提取或写入操作。 一、查看存储引擎 SHOW ENGINES; 二、设置系统默认的存储引擎 查看默认的存储引擎 show variables like %storage_engine%; 修改默认的存储引擎 …

Zoho Desk ‘24|了解客戶支持系統所有新的內容

Zoho Desk 是一款在線客戶工單管理系統&#xff0c;它的核心是以“客戶”爲宗旨&#xff0c;幫助企業從多種渠道爲客戶提供優質的售後服務支持&#xff0c;持續提升客戶滿意度和忠誠度。我們很榮幸地推出Zoho Desk 24,本篇文章我們將會介紹它的新功能以及更新地部分&#xff0c…

Jakarta Bean Validation

Validation 官网 https://beanvalidation.org/ 常见注解 Bean Validation中定义的注解&#xff1a; 注解详细信息Null被注释的元素必须为 nullNotNull被注释的元素必须不为 nullAssertTrue被注释的元素必须为 trueAssertFalse被注释的元素必须为 falseMin(value)被注释的元素…

vscode 开发代码片段插件

环境准备 node - 20v版本 &#xff0c;推荐使用nvm进行版本控制全局安装 "yo" 是 Yeoman 工具的命令行工具&#xff0c; npm i yo -g全局安装 generator-code 是一个 Yeoman 脚手架 gernerator-code npm i gernerator-code -g全局安装 npm install -g vsce官方文档 …

【解决(几乎)任何机器学习问题】:处理分类变量篇(下篇)

接【解决&#xff08;几乎&#xff09;任何机器学习问题】&#xff1a;处理分类变量篇&#xff08;上篇&#xff09;http://t.csdnimg.cn/rnzto 这篇文章相当长&#xff0c;您可以添加至收藏夹&#xff0c;以便在后续有空时候悠闲地阅读。 让我们看看填⼊ NaN 值后 ord_4 列的值…

用python绘制黄金价格变化曲线

首先你得从mt4把数据导出为csv&#xff1a;mt4如何导出数据-CSDN博客 1、引入必要的库 import numpy as np import pandas as pd import matplotlib.pyplot as plt 2、然后通过pandas载入csv数据 raw pd.read_csv("XAUUSDm1.csv", headerNone, index_colNone, p…

[工具探索]VSCode介绍和进阶使用

相比较GoLand、PhpStorm、PyCharm、WebStorm的重量级内存占用&#xff0c;从Windows系统来&#xff0c;各种卡死&#xff0c;换到MacOS倒不会卡死&#xff0c;但是内存占用太多&#xff0c;影响体验&#xff0c;决定换到VSCode。当然这个过程需要适应过渡期&#xff0c;旧伙计都…

怎么把照片缩小到200k?图片压缩这样做

怎么把照片缩小到200k&#xff1f;在日常生活中&#xff0c;将图片压缩到200K可以让我们轻松地将图片上传到社交媒体平台&#xff0c;而不会因为图片过大而导致上传失败。还可以减少存储空间占用&#xff0c;让我们可以保存更多的图片而不用担心手机或电脑存储空间不足。因此&a…

WebRTC最新版报错解决:FileNotFoundError: LASTCHANGE.committime (二十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

LeetCode 0590. N 叉树的后序遍历:深度优先搜索(DFS)

【LetMeFly】590.N 叉树的后序遍历&#xff1a;深度优先搜索(DFS) 力扣题目链接&#xff1a;https://leetcode.cn/problems/n-ary-tree-postorder-traversal/ 给定一个 n 叉树的根节点 root &#xff0c;返回 其节点值的 后序遍历 。 n 叉树 在输入中按层序遍历进行序列化表…