# LibSVM - interpreting model output

I am using libSVM on a subset of the MNIST, and I am struggling to interpret the output. I have learned that rho is the bias term, and that sv_coef is the multiplier used to get to the weight term. What is confusing me is the dimensions of the outputs:

    Parameters: [5×1 double]
nr_class: 10
totalSV: 4282
rho: [45×1 double]
Label: [10×1 double]
sv_indices: []
ProbA: [45×1 double]
ProbB: [45×1 double]
nSV: [10×1 double]
sv_coef: [4282×9 double]
SVs: [4282×784 double]


Why do we end up with dimensions of 45 for rho and 9 for the second dimension of sv_coef?

As described in here, libsvm uses 1 vs 1 classifiers for multi-class classification (it's not the only option). So, it uses $$n(n-1)/2$$ binary SVM classifiers internally. Here, that makes $$45$$ classifiers, which explains the number of bias terms.
sv_coef contains $$n-1$$ columns. Number of rows is equal to number of SVs. The number of SVs belonging to each class is stored in nSV. For example, let nSV be $$[m_1\ m_2\ ...\ m_{10}]$$. Then, first $$m_1$$ rows of sv_coef are $$\alpha_iy_i$$ coefficients belonging to $$1$$ vs $$x$$ classifiers, where $$x$$ change from $$2$$ to $$10$$, making it $$9$$ columns. The second $$m_2$$ rows belong to $$2$$ vs $$x$$ classifiers, where $$x$$ is all other classes but $$2$$ and so on.