Пример #1
0
int main(int argc, char **argv) {
	if (argc < 5) {
		cout
				<< "Usage: \n\t-train trainfile\n\t-test predictfile\n\t-his historyfile\n\t-sep separator\n\t-method SVD,ASVD,SVDPP\n\t-dim featureLength\n\t-trps 0 represent not transpose the matrix; 1 otherwise\n\t-alpha alpha\n\t-lambda lambda\n\t-iter iternum\n\t-out outputfile"
				<< endl;
		return 1;
	}
	ConsoleHelper helper(argc, argv);
	Constant constant;
	string trainfile = helper.getArg("-train", "");
	string testfile = helper.getArg("-test", "");
	string method = helper.getArg("-method", "SVD");
	string hisfile = helper.getArg("-his", "");
	// string separator = helper.getArg("-sep", "\t");
	string separator = helper.getArg("-sep", ",");	/* ZZM */
	string outputfile = helper.getArg("-out", "");
	int trps = helper.getArg("-trps", 0);
	int dim = helper.getArg("-dim", 8);
	float alpha = helper.getArg("-alpha", constant.getDefaultAlpha(method));
	float lambda = helper.getArg("-lambda", constant.getDefaultLambda(method));
	int nIter = helper.getArg("-iter", 100);
	if (trainfile.length() == 0) {
		cout << "please input trainfile" << endl;
		return 1;
	} else if (testfile.length() == 0) {
		cout << "please input testfile" << endl;
		return 1;
	}
	if (!constant.isContainMethod(method)) {
		cout << "There is no method named " << method << endl;
		return 1;
	}
	Trainer *trainer = getTrainer(method, dim, trps);
	trainer->loadFile(trainfile, testfile, separator, hisfile);
	trainer->train(alpha, lambda, nIter);
	trainer->predict(outputfile, separator);
	return 1;
}