diff options
| author | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2014-05-15 16:59:20 -0700 |
|---|---|---|
| committer | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2014-05-15 16:59:20 -0700 |
| commit | abd0e0824d21e784cbc0828ec91d237b1a62c340 (patch) | |
| tree | cb887bbb026f5593a745425b9278603b29732813 /src/msvmmaj_sv.c | |
| parent | added cblas to Makefile and free model in grid search cv (diff) | |
| download | gensvm-abd0e0824d21e784cbc0828ec91d237b1a62c340.tar.gz gensvm-abd0e0824d21e784cbc0828ec91d237b1a62c340.zip | |
add functionality for counting SVs
Diffstat (limited to 'src/msvmmaj_sv.c')
| -rw-r--r-- | src/msvmmaj_sv.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/msvmmaj_sv.c b/src/msvmmaj_sv.c new file mode 100644 index 0000000..1358d4e --- /dev/null +++ b/src/msvmmaj_sv.c @@ -0,0 +1,45 @@ +/** + * @file msvmmaj_sv.c + * @author Gertjan van den Burg + * @date May, 2014 + * @brief Calculate the number of support vectors + * + * @details + * The function in this file can be used to calculate the number of support + * vectors are left in a model. + * + */ + +#include "msvmmaj.h" +#include "msvmmaj_matrix.h" + +/** + * @brief Calculate the number of support vectors in a model + * + * @details + * If an object is correctly classified, the number of classes for which the + * error q is larger than 1, is K-1 (i.e., there is no error w.r.t. any of the + * other classes). All objects for which this is not the case are thus support + * vectors. + * + * @param[in] model MajModel with solution + * @param[in] data MajData to be used + * @return number of support vectors with this solution + * + */ +long msvmmaj_num_sv(struct MajModel *model, struct MajData *data) +{ + long i, j, num_correct, num_sv = 0; + double value; + + for (i=0; i<data->n; i++) { + num_correct = 0; + for (j=0; j<data->K; j++) { + value = matrix_get(model->Q, data->K, i, j); + num_correct += (value > 1); + } + num_sv += (num_correct < data->K - 1); + } + + return num_sv; +} |
