36 long *cv_idx =
Calloc(
long, N);
42 mu_assert(0 <= cv_idx[i] && cv_idx[i] < folds,
43 "CV range incorrect.");
50 for (i=0; i<folds; i++) {
53 if (cv_idx[j] == i) sum += 1;
55 if (sum == floor(N/folds) + 1)
60 mu_assert(is_big == N % folds,
"Incorrect number of big folds");
62 "Incorrect number of small folds");
77 long *cv_idx =
Calloc(
long, N);
83 mu_assert(0 <= cv_idx[i] && cv_idx[i] < folds,
84 "CV range incorrect.");
91 for (i=0; i<folds; i++) {
94 if (cv_idx[j] == i) sum += 1;
96 if (sum == floor(N/folds) + 1)
101 mu_assert(is_big == N % folds,
"Incorrect number of big folds");
103 "Incorrect number of small folds");
155 long *cv_idx =
Calloc(
long, full->
n);
173 mu_assert(train->
n == 8,
"train_n incorrect.");
176 mu_assert(train->
m == 2,
"train_m incorrect.");
179 mu_assert(train->
K == 3,
"train_K incorrect.");
182 mu_assert(train->
y[0] == 1,
"train y incorrect.");
183 mu_assert(train->
y[1] == 3,
"train y incorrect.");
184 mu_assert(train->
y[2] == 2,
"train y incorrect.");
185 mu_assert(train->
y[3] == 3,
"train y incorrect.");
186 mu_assert(train->
y[4] == 1,
"train y incorrect.");
187 mu_assert(train->
y[5] == 2,
"train y incorrect.");
188 mu_assert(train->
y[6] == 3,
"train y incorrect.");
189 mu_assert(train->
y[7] == 1,
"train y incorrect.");
191 mu_assert(test->
y[0] == 2,
"test y incorrect.");
192 mu_assert(test->
y[1] == 1,
"test y incorrect.");
195 "train RAW 0, 0 incorrect.");
197 "train RAW 0, 1 incorrect.");
199 "train RAW 0, 2 incorrect.");
201 "train RAW 1, 0 incorrect.");
203 "train RAW 1, 1 incorrect.");
205 "train RAW 1, 2 incorrect.");
207 "train RAW 2, 0 incorrect.");
209 "train RAW 2, 1 incorrect.");
211 "train RAW 2, 2 incorrect.");
213 "train RAW 3, 0 incorrect.");
215 "train RAW 3, 1 incorrect.");
217 "train RAW 3, 2 incorrect.");
219 "train RAW 4, 0 incorrect.");
221 "train RAW 4, 1 incorrect.");
223 "train RAW 4, 2 incorrect.");
225 "train RAW 5, 0 incorrect.");
227 "train RAW 5, 1 incorrect.");
229 "train RAW 5, 2 incorrect.");
231 "train RAW 6, 0 incorrect.");
233 "train RAW 6, 1 incorrect.");
235 "train RAW 6, 2 incorrect.");
237 "train RAW 7, 0 incorrect.");
239 "train RAW 7, 1 incorrect.");
241 "train RAW 7, 2 incorrect.");
244 "test RAW 0, 0 incorrect.");
246 "test RAW 0, 1 incorrect.");
248 "test RAW 0, 2 incorrect.");
250 "test RAW 1, 0 incorrect.");
252 "test RAW 1, 1 incorrect.");
254 "test RAW 1, 2 incorrect.");
314 long *cv_idx =
Calloc(
long, full->
n);
332 mu_assert(train->
n == 8,
"train_n incorrect.");
335 mu_assert(train->
m == 2,
"train_m incorrect.");
338 mu_assert(train->
K == 3,
"train_K incorrect.");
341 mu_assert(train->
y[0] == 1,
"train y incorrect.");
342 mu_assert(train->
y[1] == 3,
"train y incorrect.");
343 mu_assert(train->
y[2] == 2,
"train y incorrect.");
344 mu_assert(train->
y[3] == 3,
"train y incorrect.");
345 mu_assert(train->
y[4] == 1,
"train y incorrect.");
346 mu_assert(train->
y[5] == 2,
"train y incorrect.");
347 mu_assert(train->
y[6] == 3,
"train y incorrect.");
348 mu_assert(train->
y[7] == 1,
"train y incorrect.");
350 mu_assert(test->
y[0] == 2,
"test y incorrect.");
351 mu_assert(test->
y[1] == 1,
"test y incorrect.");
Minimal unit testing framework for C.
#define Calloc(type, size)
long * ja
column indices, should be of length nnz
long n_col
number of columns of the original matrix
#define mu_assert(test, message)
#define matrix_get(M, cols, i, j)
long nnz
number of nonzero elements
#define mu_run_test(test)
long * y
array of class labels, 1..K
char * test_make_cv_split_1()
A structure to represent the data.
double * values
actual nonzero values, should be of length nnz
void gensvm_get_tt_split(struct GenData *full_data, struct GenData *train_data, struct GenData *test_data, long *cv_idx, long fold_idx)
Wrapper around sparse/dense versions of this function.
void gensvm_make_cv_split(long N, long folds, long *cv_idx)
Create a cross validation split vector.
char * test_get_tt_split_dense()
void gensvm_free_data(struct GenData *data)
Free allocated GenData struct.
char * test_make_cv_split_2()
long r
number of eigenvalues (width of Z)
char * test_get_tt_split_sparse()
long m
number of predictors (width of RAW)
struct GenSparse * gensvm_dense_to_sparse(double *A, long rows, long cols)
Convert a dense matrix to a GenSparse structure if advantageous.
#define matrix_set(M, cols, i, j, val)
long n
number of instances
struct GenData * gensvm_init_data(void)
Initialize a GenData structure.
long * ia
cumulative row lengths, should be of length n_row+1
double * RAW
augmented raw data matrix
struct GenSparse * spZ
sparse representation of the augmented data matrix
Header file for gensvm_cv_util.c.
long n_row
number of rows of the original matrix