How does confusion matrix table work on 60 class or more
Show older comments

i wont do onfusion matrix for 60 class or more like this picture To find out TP,TN,FP,FN
20 Comments
Walter Roberson
on 13 Aug 2022
confusionchart perhaps
Abdullah
on 13 Aug 2022
confusionchart can handle those sizes.
confusionchart(randi(20,60,60))
Abdullah
on 13 Aug 2022
Abdullah
on 13 Aug 2022
Walter Roberson
on 13 Aug 2022
The example at that link shows 10 classes being plotted in the format you asked for. What happens when you do your 60 classes?
Abdullah
on 13 Aug 2022
Walter Roberson
on 13 Aug 2022
You are using confusionchart() rather than the plotconfusion() that I posted the more recent link to.
Abdullah
on 13 Aug 2022
That looks to me as if it is working. Just enlarge your plot area.
You want to be able to have outputs such as '46.2%' . You can't really read anything less than 8 point font, which is going to need 26 pixels wide for that character string (and more space would be preferred.) That would take at least
26*60
1560 pixels wide, plus some more for the ticks and the axes labels; those class labels would take at least 32 pixels wide. So you are probably looking at around 1650 or more pixels wide to be readable.
Abdullah
on 13 Aug 2022
Walter Roberson
on 13 Aug 2022
Yes?
Your sample plot has a '51.6%' in the middle of it. After having reduced down to 8 pixel font instead of the default 10 pixel font, the string '51.6%' takes 26 pixels width. You have 60 classes, so you need to allow space for (60 copies of 26 pixels) = 1560 pixels wide for the percentages drawn in the boxes. You have to allow 32 pixels for the '200170' class label. You need to allow 8 pixels for the sideways 'Output Class' label. That is a minimum of 1600 pixels width you need in order to be able to draw that chart -- probably more. If your window is not at least that wide then you will get overlap of characters.
Abdullah
on 13 Aug 2022
Walter Roberson
on 13 Aug 2022
Okay, suppose that you are dealing with a chart with 1000 classes. And suppose that you have an Apple Retina display, 2880 x 1800 pixels. Then at best you can allocate each class 2.88 pixels of width. You wish to display 3 numeric characters plus a symbol, (such as 51.6%) so you can afford to allocate 2.88/4 = 0.72 pixels per character at best.
Are you able to read characters that are 0.72 pixels wide?
What is your plan to be able to display 1000 classes in a single chart? How many pixels per box were you thinking of allocating? Do you have a display that is 1000 times that number wide?
Abdullah
on 13 Aug 2022
Walter Roberson
on 13 Aug 2022
Edited: Walter Roberson
on 13 Aug 2022
Yes, and you want to have that for 1000 classes. That table is 2 classes plus a marginal value, and is (2+1) boxes wide by (2+1) boxes high. For 1000 classes you would have (1000+1) boxes wide by (1000+1) boxes high. Each box needs at least 28 pixels wide if an 8 point font is used, and the class label takes 32 pixels, so you need a display that is at least
(1000+1)*28 + 32
over 28 thousand pixels wide.
Unless, that is, you want MATLAB to generate
1000 * (1000-1)/2
close to half a million different 3 x 3 graphs, each comparing exactly two classes against each other ? Like one for class 17 vs 83, one for 17 vs 84, one for 83 vs 717, and so on ?? You might be able to fit 3 of those comfortably across, so it would only take about
200 * (499500/3) %pixels high times graphs required divided by graphs wide
33 million or so pixels high.
Abdullah
on 13 Aug 2022
Walter Roberson
on 14 Aug 2022
MATLAB can generate the graph, and you can see the details if you zoom in enough, probably about 28:1
Abdullah
on 14 Aug 2022
Answers (0)
Categories
Find more on Axis Labels in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



