Matlab决策树
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab决策树
matlab版本: matlab r2010b
matlab决策树有两种:回归树Regrection Trees和分类树Classification Trees
涉及两个最基本的函数,建立决策树classregtree,进行预测eval。以前的版本会用treefit 建立决策树,用treedisp显示决策树,建议使用新的。我们使用classregtree建立一个决策树模型t,然后其他操作可以使用t.function实现,非常方便。详细信息在Browser中搜索classification tree和regression tree。
相关函数
下面介绍一些关键函数。
classregtree——构造决策树
语法
t = classregtree(X,y)
t = classregtree(X,y,'Name',value)
X是样本特征值,y是样本类别,Name\value是成对出现的可选项,具体作用参见下表。t是得到的决策树模型。如果y是确定的数值,得到的是回归树。如果y是分类变量、字符
数组或者字符串数组,得到的就是分类树。
view()——画出决策树
语法
view(t)
view(t,param1,val1,param2,val2,...)
prune——决策树剪枝
语法
t2 = prune(t1,'level',level)
t2 = prune(t1,'nodes',nodes)
t2 = prune(t1)
说明
t2 = prune(t1,'level',level),剪掉t1中的后level层,0不剪枝,1表示最底层,2表示最深的两层,以此类推。
t2 = prune(t1,'nodes',nodes)。剪掉第nodes个分枝节点后的所有枝,如果nodes不是分枝节点就不会剪枝。
t2 = prune(t1)。剪枝控制选项,如果classregtree里的没有剪枝,可以在这里实现。
eval——用决策树进行预测
语法
yfit = eval(t,X)
yfit = eval(t,X,s)
[yfit,nodes] = eval(...)
[yfit,nodes,cnums] = eval(...)
[...] = t(X)
[...] = t(X,s)
说明
t是决策树模型,X是预测样本,yfit是预测结果。s是剪枝选项,如果s是单个数值,就是几层剪枝。如果s是数值数组,那么返回一个矩阵,yfit(i)就是s(i)层剪枝的结果。nodes返回该样本所处的节点位置。cnums返回预测的类别号,1、2、3等。
示例
load fisheriris;
t = classregtree(meas,species,'names',{'SL' 'SW' 'PL' 'PW'})
view(t)
t2 = prune(t,’level’,1)
t2.view
[yfit,nodes,cnums]=eval(t,meas);
matlab自带的决策树函数应该是最基本的ID3算法,功能十分完善。网上的其他算法,在画图、剪枝等方法可能有所不足。