void evaluateTestData(const Network& net) { CsvReader reader; CsvWriter writer; cout << "Leyendo test data" << endl; MatrixXd testData = reader.csvReadToMatrix(TEST_DATA_FILE); if (testData.rows() == 0 && testData.cols() == 0) { printf("Error leyendo test data.\n"); return; } cout << "cantidad de features: " << (testData.cols() - 1) << endl << endl; cout << "Evaluando test data" << endl; MatrixXd results = net.evaluate(testData); writer.makeSubmitWithMatrix(SUBMIT_FILE, results); }
inputData_t generateInputData() { CsvReader reader; MatrixXd matrix = reader.csvReadToMatrix(TRAIN_DATA_FILE); if (matrix.rows() == 0 && matrix.cols() == 0) { printf("Error leyendo data.\n"); exit(-1); } else { cout << "cantidad de features: " << (matrix.cols() - 1) << endl << endl; } //shuflear toda la matrix PermutationMatrix<Dynamic, Dynamic> permutacionFilasRandom(matrix.rows()); permutacionFilasRandom.setIdentity(); srand(time(0)); random_shuffle(permutacionFilasRandom.indices().data(), permutacionFilasRandom.indices().data() + permutacionFilasRandom.indices().size()); matrix = permutacionFilasRandom * (matrix); // Recuce el tamanio de la matriz para poder testear. // TODO Para correr con todos los datos cambiar DATA_SIZE = 1. int nuevo_ultimo_indice = round(matrix.rows() * DATA_SIZE); matrix.conservativeResize(nuevo_ultimo_indice, matrix.cols()); int ultimo_indice_train = round(matrix.rows() * 0.8); int ultimo_indice_test = round(matrix.rows() * 0.9); MatrixXd matrix_train = matrix.block(0, 0, ultimo_indice_train, matrix.cols()); MatrixXd matrix_test = matrix.block(ultimo_indice_train, 0, ultimo_indice_test - ultimo_indice_train, matrix_train.cols()); MatrixXd matrix_validation = matrix.block(ultimo_indice_test, 0, matrix.rows() - ultimo_indice_test, matrix_train.cols()); matrix.resize(0, 0); inputData_t data; //separar matrix_train en x_train, y_train //separar matrix_test en x_test, y_test data.x_train = matrix_train.block(0, 0, matrix_train.rows(), matrix_train.cols() - 1); data.y_train = (matrix_train.block(0, matrix_train.cols() - 1, matrix_train.rows(), 1)); //me dice que puse different types data.x_test = matrix_test.block(0, 0, matrix_test.rows(), matrix_test.cols() - 1); data.y_test = matrix_test.block(0, matrix_test.cols() - 1, matrix_test.rows(), 1); data.x_validation = matrix_validation.block(0, 0, matrix_validation.rows(), matrix_validation.cols() - 1); data.y_validation = matrix_validation.block(0, matrix_validation.cols() - 1, matrix_validation.rows(), 1); matrix_train.resize(0, 0); matrix_test.resize(0, 0); cout << "Train x: " << data.x_train.rows() << "x" << data.x_train.cols() << "\n"; cout << "Train y: " << data.y_train.rows() << "x" << data.y_train.cols() << "\n"; cout << "Test x: " << data.x_test.rows() << "x" << data.x_test.cols() << "\n"; cout << "Test y: " << data.y_test.rows() << "x" << data.y_test.cols() << "\n"; cout << "Validation x: " << data.x_validation.rows() << "x" << data.x_validation.cols() << "\n"; cout << "Validation y: " << data.y_validation.rows() << "x" << data.y_validation.cols() << "\n"; return data; }