void Dataset::get_train_test_set(std::vector< std::vector<double> >& inputMat, std::vector<int>& inputLabels, unsigned int nrows, std::vector< std::vector<double> >& trnMat, std::vector<int>& trnLabels, std::vector< std::vector<double> >& tstMat, std::vector<int>& tstLabels, std::vector<unsigned int>* ret_trn_idx, std::vector<unsigned int>* ret_tst_idx) { std::srand ( unsigned ( std::time(0) ) ); std::vector<unsigned int> ridx; for(size_t ii=0; ii < inputMat.size(); ii++) ridx.push_back(ii); std::random_shuffle(ridx.begin(), ridx.end()); if(ret_trn_idx != NULL){ ret_trn_idx->clear(); ret_trn_idx->insert(ret_trn_idx->begin(), ridx.begin(), ridx.begin()+nrows); } std::vector<unsigned int> tst_idx; tst_idx.insert(tst_idx.begin(), ridx.begin()+ nrows, ridx.end()); if(ret_tst_idx != NULL){ ret_tst_idx->clear(); ret_tst_idx->insert(ret_tst_idx->begin(), tst_idx.begin(), tst_idx.end()); } ridx.erase(ridx.begin()+nrows, ridx.end()); get_submatrix(inputMat, inputLabels, ridx, trnMat, trnLabels); get_submatrix(inputMat, inputLabels, tst_idx, tstMat, tstLabels); }
void Dataset::get_random_train_test_data(unsigned int nrows, std::vector<unsigned int>& ridx, std::vector< std::vector<double> >& trnMat, std::vector<int>& trnLabels, std::vector< std::vector<double> >& tstMat, std::vector<int>& tstLabels) { std::srand ( unsigned ( std::time(0) ) ); if (!(all_features.size()>0)){ printf("Features not computed \n"); return; } ridx.clear(); for(size_t ii=0; ii < all_features.size(); ii++) ridx.push_back(ii); std::random_shuffle(ridx.begin(), ridx.end()); ridx.erase(ridx.begin()+nrows, ridx.end()); set_trn_idx(ridx); get_submatrix(all_features, all_labels, trn_idx, trnMat, trnLabels); get_submatrix(all_features, all_labels, tst_idx, tstMat, tstLabels); }
int main(int argc, char *argv[]){ double mmvalues[] = {2.0,3.0,1.0,1.0,4.0,2.0,2.0,1.0,2.0,1.0,4.0,2.0,2.0,3.0,1.0,1.0,4.0,2.0,2.0,1.0,2.0,1.0,4.0,2.0,5.0,4.0,2.0,2.0,1.0,2.0,\ 4.0,2.0,2.0,1.0,2.0,1.0,6.0,3.0,1.0,1.0,4.0,2.0,2.0,1.0,9.0,1.0,4.0,2.0,5.0,4.0,2.0,2.0,1.0,2.0,5.0,5.0,2.0,2.0,1.0,2.0}; matrix_t mm, ma, mb, mc, md, mx, my, mz; init_matrix(&mm, 'm', 6, 6, mmvalues); init_matrix(&ma, 'a', 3, 3, NULL); init_matrix(&mb, 'b', 3, 3, NULL); init_matrix(&mc, 'c', 3, 3, NULL); display_matrix(&mm); display_matrix(&ma); display_matrix(&mb); display_matrix(&mc); free_matrix(&ma); ma = get_submatrix(&mm, 2, 1, 4, 4); display_matrix(&ma); free_matrix(&mb); mb = get_submatrix(&mm, 3, 2, 4, 4); display_matrix(&mb); mx = matrix_mul(&ma, &mb, 'X'); my = square_matrix_mul_recursive(&ma, &mb, 'Y'); mz = square_matrix_mul_strassen(&ma, &mb, 'Z'); printf("the result is \n"); display_matrix(&mx); display_matrix(&my); display_matrix(&mz); ma = get_submatrix(&mm, 1, 2, 6, 1); mb = get_submatrix(&mm, 2, 1, 1, 6); display_matrix(&ma); display_matrix(&mb); mc = matrix_mul(&mb, &ma, '1'); display_matrix(&mc); md = matrix_mul(&ma, &mb, 'S'); display_matrix(&md); free_matrix(&mc); mc = matrix_scale(&md, 2, '2'); display_matrix(&mc); free_matrix(&ma); free_matrix(&mb); free_matrix(&mc); free_matrix(&md); free_matrix(&mx); free_matrix(&my); free_matrix(&mz); return 0; }//main
void Dataset::get_train_test_data(std::vector<unsigned int>& pidx, std::vector< std::vector<double> >& trnMat, std::vector<int>& trnLabels, std::vector< std::vector<double> >& tstMat, std::vector<int>& tstLabels) { set_trn_idx(pidx); get_submatrix(all_features, all_labels, trn_idx, trnMat, trnLabels);//experimental version if (trn_labels.size()>0) trnLabels.assign(trn_labels.begin(),trn_labels.end()); get_submatrix(all_features, all_labels, tst_idx, tstMat, tstLabels); }
void Dataset::get_test_data(std::vector<unsigned int>& pidx, std::vector< std::vector<double> >& tstMat, std::vector<int>& tstLabels) { set_trn_idx(pidx); get_submatrix(all_features, all_labels, tst_idx, tstMat, tstLabels); }
void Dataset::get_random_submatrix(std::vector< std::vector<double> >& inputMat, std::vector<int>& inputLabels, unsigned int nrows, std::vector< std::vector<double> >& outputMat, std::vector<int>& outputLabels) { std::srand ( unsigned ( std::time(0) ) ); std::vector<unsigned int> ridx; for(size_t ii=0; ii < inputMat.size(); ii++) ridx.push_back(ii); std::random_shuffle(ridx.begin(), ridx.end()); ridx.erase(ridx.begin()+nrows, ridx.end()); get_submatrix(inputMat, inputLabels, ridx, outputMat, outputLabels); }