static void GenericItemBasedRecommenderTestByTanimotoCoefficientSimilarity() { Console.WriteLine("GenericItemBasedRecommenderTestByTanimotoCoefficientSimilarity"); System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch(); watch.Start(); var model = new FileDataModel(filePath); ItemSimilarity similarity = new TanimotoCoefficientSimilarity(model); var recommender = new GenericItemBasedRecommender(model, similarity); var iter = model.getUserIDs(); while (iter.MoveNext()) { var userId = iter.Current; var recommendedItems = recommender.recommend(userId, 5); Console.Write("uid:" + userId); foreach (var ritem in recommendedItems) { Console.Write("(" + ritem.getItemID() + "," + ritem.getValue() + ")"); } Console.WriteLine(); } watch.Stop(); Console.WriteLine(watch.ElapsedMilliseconds); }
public IRecommender BuildRecommender(IDataModel model) { IUserSimilarity similarity = new TanimotoCoefficientSimilarity(model); IUserNeighborhood neighborhood = new NearestNUserNeighborhood(10, similarity, model); return (new GenericUserBasedRecommender(model, neighborhood, similarity)); }
public List <Historial> SelectRecommendations(string userId) { Data.dsMantenimientoTableAdapters.HistorialTableAdapter adapter = new Data.dsMantenimientoTableAdapters.HistorialTableAdapter(); Data.dsMantenimiento.HistorialDataTable dt = adapter.SelectHistorial(); var Recomendaciones = new List <Historial>(); if (dt.Rows.Count == 0) { return(Recomendaciones); } foreach (Data.dsMantenimiento.HistorialRow data in dt) { var Historial = new Historial(); Historial.Restaurante = data.Restaurante; Historial.Usuario = data.Usuario; Historial.Puntuacion = data.Puntuacion.ToString(); Recomendaciones.Add(Historial); } //var model = new FileDataModel("data.csv"); //var similarity = new TanimotoCoefficientSimilarity(model); //var neighborhood = new NearestNUserNeighborhood(3, similarity, model); //var recommender = new GenericUserBasedRecommender(model, neighborhood, similarity); //var recommendedItems = recommender.Recommend(Convert.ToInt64(userId), 5); var ordersDataModel = LoadOrdersDataModel(); // lets assume that we have a new user interted in some product var currentProductID = 57; // Product Name: Ravioli Angelo var modelWithCurrentUser = GetDataModelForNewUser(ordersDataModel, currentProductID); var similarity = new TanimotoCoefficientSimilarity(modelWithCurrentUser); // in this example, we have no preference values (scores) // to get correct results 'BooleanfPref' recommenders should be used var recommender = new GenericBooleanPrefItemBasedRecommender(modelWithCurrentUser, similarity); var recommendedItems = recommender.Recommend(PlusAnonymousUserDataModel.TEMP_USER_ID, 10, null); Console.WriteLine("Products similar to {0} ({1}):", currentProductID, GetProductName(currentProductID)); foreach (var ri in recommendedItems) { Console.WriteLine("\tProductID={0}: {1}", ri.GetItemID(), GetProductName(ri.GetItemID())); } Console.WriteLine("Press any key to continue..."); Console.ReadKey(); return(Recomendaciones); }