Viewing a cross validated classification tree in the “Classification Tree Viewer”

Technical Source
2 min readMay 24, 2022

--

Hi,

I am using the cross validation method ‘crossval’ as explained in the matlab help;

cvmodel = crossval(model) creates a partitioned model from model, a fitted classification tree. By default, crossval uses 10-fold cross validation on the training data to create cvmodel.

I have already produced the classification tree with M being a matrix of variables and A being a column vector of classification;

tree = ClassificationTree.fit(M, A);

and can view this tree using ‘view’

view(tree,'mode','graph')

Previously I had split matrix M into training and sample groups however now I would like to use the cross validation method ‘crossval’ to produce a more accurate accuracy prediction

cvtree = crossval(tree);

I can then use kfoldLoss and kfoldPredict to determine the effectiveness of the tree however I cannot determine how to ‘view’ the tree in any sense. I have attempted the following;

view(cvtree)

and

view(cvtree,'mode','graph')

however always get the same error;

*__view(cvtree) Error using classreg.learning.internal.DisallowVectorOps/throwNoCatError (line 57) Concatenation of classreg.learning.partition.ClassificationPartitionedModel objects is not allowed. Use a cell array to contain multiple objects.

Error in classreg.learning.internal.DisallowVectorOps/horzcat (line 48) function a = horzcat(this,varargin), throwNoCatError(this); end

Error in view (line 66) if(~all(isnumeric([viewArgs{:}])))_*

I was of the understanding that the crossval method produces 10 trees each with 90% of the data and tests these on the remaining 10% before selecting the tree which gives the greatest accuracy. Is this correct? and if so, why can I not view this resultant tree?

I really hope someone can help as I have been trawling the internet and matlab documentation for hours with no luck!

NOTE:-

Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.

when you crossvalidate, the output is a ClassificationPartitionedModel, which means that it contains all the cross-validated trees and will use all of them to do prediction. All the individual trees can be accessed as follows:

>> cvtree.Trained
>> view(cvtree.Trained{1},'mode','graph')
>> view(cvtree.Trained{2},'mode','graph') % etc

All the individual losses (of course based on your loss function) can be accessed as below:

>> cvtree.kfoldLoss('mode','individual')

You can view and use an individual tree if you like. Use ‘kfoldPredict’ to predict from the entire crossvalidated model.

SEE COMPLETE ANSWER CLICK THE LINK

--

--

Technical Source
Technical Source

Written by Technical Source

Simple! That is me, a simple person. I am passionate about knowledge and reading. That’s why I have decided to write and share a bit of my life and thoughts to.

No responses yet