How does confusion matrix table work on 60 class or more

i wont do onfusion matrix for 60 class or more like this picture To find out TP,TN,FP,FN

20 Comments

It works on a few class
i have 60 class or more
confusionchart can handle those sizes.
confusionchart(randi(20,60,60))
Is it possible to make it look like this or no?
THANK YOU IT'S THE SAME NOT WORK
The example at that link shows 10 classes being plotted in the format you asked for. What happens when you do your 60 classes?
You are using confusionchart() rather than the plotconfusion() that I posted the more recent link to.
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
ans = 1560
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.
its 60 classes Each of them has 20 elements
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.
It's not enough for thes big dataset
In addition to casia v4 which contains 1000 class
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?
I just want to have a table that contains TP,TN,FP,FN like this picture
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
ans = 28060
over 28 thousand pixels wide.
Unless, that is, you want MATLAB to generate
1000 * (1000-1)/2
ans = 499500
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
ans = 33300000
33 million or so pixels high.
This is impossible.
thank you very much sir
MATLAB can generate the graph, and you can see the details if you zoom in enough, probably about 28:1

Sign in to comment.

Answers (0)

Products

Asked:

on 13 Aug 2022

Commented:

on 14 Aug 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!