Table* rf_cols(Table *tbl) { Table *t = tbl_make(); int columnCount = tbl_column_count(tbl); int rowCount = tbl_row_count(tbl); int loopCount = (columnCount - 1) * 2 / 3; char *type = tbl_type(tbl); int *randomColumns = (int*)malloc(sizeof(int) * loopCount); int r; for(int i = 0 ; i < loopCount; i++) { int flag = 1; while(flag) { r = rand() % (columnCount - 2); if(i == 0) { flag = 0; break; } for(int j = 0; j < i; j++) { if(randomColumns[j] == r) { break; } if(j == i - 1) { flag = 0; } } } randomColumns[i] = r; } for(int i = 0 ; i < rowCount; i++) { tbl_start_row(t, loopCount); for(int j = 0; j < loopCount; j++) { if(type[randomColumns[j]] == 'S') { tbl_add_string_to_row(t, tbl_string_at(tbl_row_at(tbl, i), randomColumns[j])); } else { tbl_add_double_to_row(t, tbl_double_at(tbl_row_at(tbl, i), randomColumns[j])); } } if(type[columnCount - 1] == 'S') { tbl_add_string_to_row(t, tbl_string_at(tbl_row_at(tbl, i), columnCount - 1)); } else { tbl_add_double_to_row(t, tbl_double_at(tbl_row_at(tbl, i), columnCount - 1)); } } tbl_done_building(t); free(randomColumns); return t; }
Table* rf_rows(Table *tbl) { Row ** rows = tbl_rows(tbl); Table *t = tbl_make(); char *type = tbl_type(tbl); int r; int rowCount = tbl_row_count(tbl); int columnCount = tbl_column_count(tbl); for(int i = 0; i < rowCount; i++) { r = rand() % (rowCount - 1); tbl_start_row(t, columnCount); for(int j = 0; j < columnCount; j++) { if(type[j] == 'S') { tbl_add_string_to_row(t, tbl_string_at(rows[r], j)); //printf("test: %s\n", tbl_string_at(rows[r], j)); } else { tbl_add_double_to_row(t, tbl_double_at(rows[r], j)); } } } tbl_done_building(t); //tbl_print(t); return t; }
int main(){ colnames = calloc(5, sizeof(char*)); char* c1 = "outlook"; char* c2 = "temperature"; char* c3 = "humidity"; char* c4 = "wind"; char* c5 = "play"; colnames[0] = c1; colnames[1] = c2; colnames[2] = c3; colnames[3] = c4; colnames[4] = c5; //********0.txt******** char* p1 = "rainy"; char* p2 = "overcast"; char* p3 = "sunny"; char* t1 = "cool"; char* t2 = "mild"; char* t3 = "hot"; char* h1 = "normal"; char* h2 = "high"; char* h3 = "low"; char* w1 = "true"; char* w2 = "false"; //************1.txt************ char* x1 = "cat"; char* x2 = "dog"; char* x3 = "person"; char* x4 = "emu"; char* x5 = "rat"; char* x6 = "orange"; char* x7 = "plug"; Table* tbl = tbl_make(); /* tbl_start_row(tbl, 5); tbl_add_string_to_row(tbl, p1); tbl_add_string_to_row(tbl, t1); tbl_add_string_to_row(tbl, h1); tbl_add_string_to_row(tbl, w2); tbl_add_double_to_row(tbl, 0.0); tbl_start_row(tbl, 5); tbl_add_string_to_row(tbl, p1); tbl_add_string_to_row(tbl, t1); tbl_add_string_to_row(tbl, h1); tbl_add_string_to_row(tbl, w2); tbl_add_double_to_row(tbl, 1.0); tbl_done_building(tbl); *//* tbl_start_row(tbl, 3); tbl_add_string_to_row(tbl, x1); tbl_add_double_to_row(tbl, 15); tbl_add_double_to_row(tbl, 1); tbl_start_row(tbl, 3); tbl_add_string_to_row(tbl, x2); tbl_add_double_to_row(tbl, 50); tbl_add_double_to_row(tbl, 0); tbl_start_row(tbl, 3); tbl_add_string_to_row(tbl, x3); tbl_add_double_to_row(tbl, 30); tbl_add_double_to_row(tbl, 0); tbl_start_row(tbl, 3); tbl_add_string_to_row(tbl, x4); tbl_add_double_to_row(tbl, 12); tbl_add_double_to_row(tbl, 0); tbl_start_row(tbl, 3); tbl_add_string_to_row(tbl, x5); tbl_add_double_to_row(tbl, 12); tbl_add_double_to_row(tbl, 1); tbl_start_row(tbl, 3); tbl_add_string_to_row(tbl, x6); tbl_add_double_to_row(tbl, 12); tbl_add_double_to_row(tbl, 0); tbl_start_row(tbl, 3); tbl_add_string_to_row(tbl, x7); tbl_add_double_to_row(tbl, 15); tbl_add_double_to_row(tbl, 1); tbl_done_building(tbl); */ //*******0.txt********* tbl_start_row(tbl, 5); tbl_add_string_to_row(tbl, p1); tbl_add_string_to_row(tbl, t1); tbl_add_string_to_row(tbl, h1); tbl_add_string_to_row(tbl, w2); tbl_add_double_to_row(tbl, 1.0); tbl_start_row(tbl, 5); tbl_add_string_to_row(tbl, p1); tbl_add_string_to_row(tbl, t1); tbl_add_string_to_row(tbl, h1); tbl_add_string_to_row(tbl, w1); tbl_add_double_to_row(tbl, 0.0); tbl_start_row(tbl, 5); tbl_add_string_to_row(tbl, p2); tbl_add_string_to_row(tbl, t3); tbl_add_string_to_row(tbl, h2); tbl_add_string_to_row(tbl, w2); tbl_add_double_to_row(tbl, 1.0); tbl_start_row(tbl, 5); tbl_add_string_to_row(tbl, p3); tbl_add_string_to_row(tbl, t2); tbl_add_string_to_row(tbl, h2); tbl_add_string_to_row(tbl, w2); tbl_add_double_to_row(tbl, 0.0); tbl_start_row(tbl, 5); tbl_add_string_to_row(tbl, p1); tbl_add_string_to_row(tbl, t1); tbl_add_string_to_row(tbl, h1); tbl_add_string_to_row(tbl, w2); tbl_add_double_to_row(tbl, 1.0); tbl_start_row(tbl, 5); tbl_add_string_to_row(tbl, p3); tbl_add_string_to_row(tbl, t1); tbl_add_string_to_row(tbl, h1); tbl_add_string_to_row(tbl, w2); tbl_add_double_to_row(tbl, 1.0); tbl_start_row(tbl, 5); tbl_add_string_to_row(tbl, p1); tbl_add_string_to_row(tbl, t1); tbl_add_string_to_row(tbl, h1); tbl_add_string_to_row(tbl, w2); tbl_add_double_to_row(tbl, 1.0); tbl_start_row(tbl, 5); tbl_add_string_to_row(tbl, p3); tbl_add_string_to_row(tbl, t3); tbl_add_string_to_row(tbl, h1); tbl_add_string_to_row(tbl, w2); tbl_add_double_to_row(tbl, 1.0); tbl_start_row(tbl, 5); tbl_add_string_to_row(tbl, p2); tbl_add_string_to_row(tbl, t2); tbl_add_string_to_row(tbl, h2); tbl_add_string_to_row(tbl, w1); tbl_add_double_to_row(tbl, 1.0); tbl_start_row(tbl, 5); tbl_add_string_to_row(tbl, p3); tbl_add_string_to_row(tbl, t2); tbl_add_string_to_row(tbl, h2); tbl_add_string_to_row(tbl, w1); tbl_add_double_to_row(tbl, 0.0); tbl_start_row(tbl, 5); tbl_add_string_to_row(tbl, p2); tbl_add_string_to_row(tbl, t3); tbl_add_string_to_row(tbl, h1); tbl_add_string_to_row(tbl, w2); tbl_add_double_to_row(tbl, 0.0); tbl_done_building(tbl); //tbl_print(tbl); /* Table* ret = tbl_make(); tbl_start_row(ret, 5); tbl_add_string_to_row(ret, p2); tbl_add_string_to_row(ret, t1); tbl_add_string_to_row(ret, h3); tbl_add_string_to_row(ret, w1); tbl_add_double_to_row(ret, 1.0); tbl_start_row(ret, 5); tbl_add_string_to_row(ret, p3); tbl_add_string_to_row(ret, t3); tbl_add_string_to_row(ret, h2); tbl_add_string_to_row(ret, w2); tbl_add_double_to_row(ret, 0.0); tbl_start_row(ret, 5); tbl_add_string_to_row(ret, p1); tbl_add_string_to_row(ret, t1); tbl_add_string_to_row(ret, h1); tbl_add_string_to_row(ret, w2); tbl_add_double_to_row(ret, 1.0); tbl_start_row(ret, 5); tbl_add_string_to_row(ret, p1); tbl_add_string_to_row(ret, t1); tbl_add_string_to_row(ret, h1); tbl_add_string_to_row(ret, w1); tbl_add_double_to_row(ret, 0.0); tbl_done_building(ret);*/ char* split = "mild"; // tbl_print_row(tbl_row_at(ret, 0)); // tbl_print_row(rt); Table* ret = tbl_make(); ret = resample(tbl); // tbl = resample(ret); // tbl_print(ret); // printf("\n"); // tbl_print(tbl); }