| | |
| | | free(m.vals); |
| | | } |
| | | |
| | | float matrix_accuracy(matrix truth, matrix guess) |
| | | { |
| | | int k = truth.cols; |
| | | int i; |
| | | int count = 0; |
| | | for(i = 0; i < truth.rows; ++i){ |
| | | int class = max_index(guess.vals[i], k); |
| | | if(truth.vals[i][class]) ++count; |
| | | } |
| | | return (float)count/truth.rows; |
| | | } |
| | | |
| | | void matrix_add_matrix(matrix from, matrix to) |
| | | { |
| | | assert(from.rows == to.rows && from.cols == to.cols); |
| | | int i,j; |
| | | for(i = 0; i < from.rows; ++i){ |
| | | for(j = 0; j < from.cols; ++j){ |
| | | to.vals[i][j] += from.vals[i][j]; |
| | | } |
| | | } |
| | | } |
| | | |
| | | matrix make_matrix(int rows, int cols) |
| | | { |
| | | int i; |
| | | matrix m; |
| | | m.rows = rows; |
| | | m.cols = cols; |
| | | m.vals = calloc(m.rows, sizeof(double *)); |
| | | int i; |
| | | for(i = 0; i < m.rows; ++i) m.vals[i] = calloc(m.cols, sizeof(double)); |
| | | m.vals = calloc(m.rows, sizeof(float *)); |
| | | for(i = 0; i < m.rows; ++i){ |
| | | m.vals[i] = calloc(m.cols, sizeof(float)); |
| | | } |
| | | return m; |
| | | } |
| | | |
| | |
| | | matrix h; |
| | | h.rows = n; |
| | | h.cols = m->cols; |
| | | h.vals = calloc(h.rows, sizeof(double *)); |
| | | h.vals = calloc(h.rows, sizeof(float *)); |
| | | for(i = 0; i < n; ++i){ |
| | | int index = rand()%m->rows; |
| | | h.vals[i] = m->vals[index]; |
| | |
| | | return h; |
| | | } |
| | | |
| | | double *pop_column(matrix *m, int c) |
| | | float *pop_column(matrix *m, int c) |
| | | { |
| | | double *col = calloc(m->rows, sizeof(double)); |
| | | float *col = calloc(m->rows, sizeof(float)); |
| | | int i, j; |
| | | for(i = 0; i < m->rows; ++i){ |
| | | col[i] = m->vals[i][c]; |
| | |
| | | |
| | | int n = 0; |
| | | int size = 1024; |
| | | m.vals = calloc(size, sizeof(double*)); |
| | | m.vals = calloc(size, sizeof(float*)); |
| | | while((line = fgetl(fp))){ |
| | | if(m.cols == -1) m.cols = count_fields(line); |
| | | if(n == size){ |
| | | size *= 2; |
| | | m.vals = realloc(m.vals, size*sizeof(double*)); |
| | | m.vals = realloc(m.vals, size*sizeof(float*)); |
| | | } |
| | | m.vals[n] = parse_fields(line, m.cols); |
| | | free(line); |
| | | ++n; |
| | | } |
| | | m.vals = realloc(m.vals, n*sizeof(double*)); |
| | | m.vals = realloc(m.vals, n*sizeof(float*)); |
| | | m.rows = n; |
| | | return m; |
| | | } |