void predictAll(bool train){ loadData(data,train); loadUserItemData(users, items, data); for(int i = 0; i < data.size(); ++i){ int user = data[i].user; int item = data[i].item; ui[user].push_back(item); nu[user]++; ni[item]++; } int u; loadSim(train); map<int,int> test; if(train) getTestSet2(test); else getTestSet(test); string file = "../ret2/results-knni-all.txt"; if(train) file += ".0"; ofstream out(file.c_str()); for(map<int,int>::iterator k = test.begin(); k != test.end(); ++k){ int u = k->first; vector< pair<int,float> > ret; predict2(u, ret); out << u << "\t"; for(int i = 0; i < ret.size() && i < 500; ++i) out << ret[i].first << "\t" << ret[i].second / ret[0].second << "\t"; out << endl; } out.close(); }
int main(int argc, char ** argv){ loadData(data,true); loadTestData(); loadUserItemData(users, items, data); for(int i = 0; i < data.size(); ++i) nu[data[i].user]++; #define K 7 vector< vector< map<int,float> > > tests(K); vector< float > weight(K); int k = 0; loadResults("../ret2/results-knni-iuf.txt.0", tests[k]); weight[k] = 1; ++k; loadResults("../ret2/results-knnu-iif.txt.0", tests[k]); weight[k] = 1; ++k; loadResults("../ret2/results-knnui.txt.0", tests[k]); weight[k] = 1; ++k; loadResults("../ret2/results-language.txt.0", tests[k]); weight[k] = 0.4; ++k; loadResults("../ret2/results-repos.txt.0", tests[k]); weight[k] = 0.4; ++k; loadResults("../ret2/results-reponame.txt.0", tests[k]); weight[k] = 0.2; ++k; loadResults("../ret2/results-pop-nic.txt.0", tests[k]); weight[k] = 0.01; ++k; srand(time(0)); int j = 0; for(int step = 0; step < 20; ++step){ int i = j % K; ++j; float w0 = weight[i]; int r0 = bag(tests, weight); weight[i] *= (1 + 0.5 * (rand01() - 0.5)); int r1 = bag(tests, weight); if(r1 <= r0) weight[i] = w0; cout << step << "\t" << r0 << "\t" << r1 << endl; } for(int i = 0; i < weight.size(); ++i) cout << i << "\t" << weight[i] << endl; return 0; }