Beispiel #1
0
int main (int argc, char** argv)
{

	learned_factors_t* learned = NULL;


	recommended_items_t* r_items = NULL;
	struct k_fold_parameters k_fold_params;

	void * param_to_find = NULL;
	int is_float;

	


	
	clock_t start = clock();
	clock_t end;

	if (parse_arguments (argc, argv, &k_fold_params, &param_to_find, &is_float) != 0)
	{
		exit (-1);
	}


	k_fold_params.model.parameters = k_fold_params.params;


	if (param_to_find != NULL)
		if (is_float)
		{
			d_find_minimum_tsearch ( (float*) param_to_find, 0.1, 1, 0.1, 40, &k_fold_params,&RMSE_mean);
		}
		else
		{
			i_find_minimum_tsearch ( (int*) param_to_find, 1, 100, 30, &k_fold_params,&RMSE_mean);
		}
	else
	{
		error_t e= RMSE_mean (k_fold_params);
		
		
		printf (" %f", e.RMSE );
		printf (" %f \n", e.MAE );
		
	}
	free_recommended_items (r_items);
	free_learned_factors (learned);
	
	k_fold_params.social_relations_file_path = NULL;
	free (k_fold_params.file_path);
	free (k_fold_params.social_relations_file_path);
	end = clock();
	printf ("Time : %f s \n", (double) (end - start) / CLOCKS_PER_SEC);
	system ("pause");
	

	return 0;
}
Beispiel #2
0
int 
main(void) {

	learned_factors_t* learned;
	training_set_t* tset;
	recommended_items_t* r_items = NULL;

	learning_model_t model = {0};

	//Model configuration
	//Setup model parameters
	model_parameters_t params = { 0 };
	
	params.items_number = 3;
	params.users_number = 2;
	params.training_set_size = 5;

	params.dimensionality = 40;
	params.iteration_number = 60;

	params.lambda = 0.055;
	params.step = 0.0095;

	params.lambda_bias = 0.02;
	params.step_bias = 0.001;
	
	//Use the basic matrix factorization model
	model.learning_algorithm = learn_mf_bias;
	model.rating_estimator   = estimate_rating_mf_bias;
	model.parameters	 = params;

	//Learning
	//Initialize a training set
	tset = init_training_set(params);

	set_known_rating(0, 0, 1, tset);
	set_known_rating(0, 1, 0, tset);
	set_known_rating(0, 2, 6, tset);

	set_known_rating(1, 1, 0, tset);
	set_known_rating(1, 0, 2, tset);

	compile_training_set(tset);

	learned = learn(tset, model);

	//Rating estimation
	printf(	"users [0] item [0], rating = %f \n",
		 estimate_rating_from_factors(0, 0, learned, model));

	printf(	"users [0] item [1], rating = %f \n",
		 estimate_rating_from_factors(0, 1, learned, model));

	printf(	"users [0] item [2], rating = %f \n", 
		estimate_rating_from_factors(0, 2, learned, model));

	printf(	"users [1] item [1], rating = %f \n", 
		estimate_rating_from_factors(1, 1, learned, model));

	printf(	"users [1] item [0], rating = %f \n",
		 estimate_rating_from_factors(1, 0, learned, model));

	r_items = recommend_items(0, 3, learned, tset, model);

	print_recommended_items(r_items->items->head, 0);

	free_recommended_items(r_items);
	free_learned_factors(learned);
	free_training_set(tset);

	return 0;
}