diff options
| author | Gertjan van den Burg <burg@ese.eur.nl> | 2016-10-17 13:44:54 +0200 |
|---|---|---|
| committer | Gertjan van den Burg <burg@ese.eur.nl> | 2016-10-17 13:44:54 +0200 |
| commit | cc40bb91ce4509a177a729e58cb78afe5ca0dfb0 (patch) | |
| tree | 032dbb51706af2e2d47f645f3a479d2106bf0780 /src/gensvm_pred.c | |
| parent | Update predictions to work with sparse matrices (diff) | |
| download | gensvm-cc40bb91ce4509a177a729e58cb78afe5ca0dfb0.tar.gz gensvm-cc40bb91ce4509a177a729e58cb78afe5ca0dfb0.zip | |
refactor gensvm_pred to gensvm_predict
Diffstat (limited to 'src/gensvm_pred.c')
| -rw-r--r-- | src/gensvm_pred.c | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/src/gensvm_pred.c b/src/gensvm_pred.c deleted file mode 100644 index 31b591c..0000000 --- a/src/gensvm_pred.c +++ /dev/null @@ -1,99 +0,0 @@ -/** - * @file gensvm_pred.c - * @author Gertjan van den Burg - * @date August 9, 2013 - * @brief Main functions for predicting class labels.. - * - * @details - * This file contains functions for predicting the class labels of instances - * and a function for calculating the predictive performance (hitrate) of - * a prediction given true class labels. - * - */ - -#include "gensvm_pred.h" - -/** - * @brief Predict class labels of data given and output in predy - * - * @details - * The labels are predicted by mapping each instance in data to the - * simplex space using the matrix V in the given model. Next, for each - * instance the nearest simplex vertex is determined using an Euclidean - * norm. The nearest simplex vertex determines the predicted class label, - * which is recorded in predy. - * - * @param[in] testdata GenData to predict labels for - * @param[in] model GenModel with optimized V - * @param[out] predy pre-allocated vector to record predictions in - */ -void gensvm_predict_labels(struct GenData *testdata, struct GenModel *model, - long *predy) -{ - long i, j, k, n, K, label; - double norm, min_dist, - *S = NULL, - *ZV = NULL; - - n = testdata->n; - K = model->K; - - // allocate necessary memory - S = Calloc(double, K-1); - ZV = Calloc(double, n*(K-1)); - - // Generate the simplex matrix - gensvm_simplex(model); - - // Generate the simplex space vectors - gensvm_calculate_ZV(model, testdata, ZV); - - // Calculate the distance to each of the vertices of the simplex. - // The closest vertex defines the class label - for (i=0; i<n; i++) { - label = 0; - min_dist = INFINITY; - for (j=0; j<K; j++) { - for (k=0; k<K-1; k++) { - S[k] = matrix_get(ZV, K-1, i, k) - - matrix_get(model->U, K-1, j, k); - } - norm = cblas_dnrm2(K-1, S, 1); - if (norm < min_dist) { - label = j+1; - min_dist = norm; - } - } - predy[i] = label; - } - - free(ZV); - free(S); -} - -/** - * @brief Calculate the predictive performance (percentage correct) - * - * @details - * The predictive performance is calculated by simply counting the number - * of correctly classified samples and dividing by the total number of - * samples, multiplying by 100. - * - * @param[in] data the GenData dataset with known labels - * @param[in] predy the predicted class labels - * - * @returns percentage correctly classified. - */ -double gensvm_prediction_perf(struct GenData *data, long *predy) -{ - long i, correct = 0; - double performance; - - for (i=0; i<data->n; i++) - if (data->y[i] == predy[i]) - correct++; - - performance = ((double) correct)/((double) data->n)* 100.0; - - return performance; -} |
