private Dictionary <int, double> GetDistance(IDistance distance) { // userId with simularity Dictionary <int, double> userDis = new Dictionary <int, double>(); // Getting other user with the same items rated foreach (KeyValuePair <int, Dictionary <int, double> > item in _dict) { int curUser = item.Key; List <double> p = new List <double>(); List <double> q = new List <double>(); foreach (KeyValuePair <int, double> curArticle in item.Value) { if (curUserItems.ContainsKey(curArticle.Key)) { p.Add(curUserItems[curArticle.Key]); q.Add(curArticle.Value); } } // calculate the simularity double dis = distance.Calculate(p.ToArray(), q.ToArray()); userDis.Add(item.Key, dis); } Console.WriteLine($"Interface = {distance.GetType()} Distance of items:"); Ranking(userDis); return(userDis); }
public override List <string> DescribeSelf() { List <String> output = new List <string>(); var state = states.FirstOrDefault().Value; output.Add("Classification using k-Nearest Neighbors [" + state.machine.GetType().Name + "] with K = " + setup.kNN_k + "."); output.Add("Distance structure [" + _distance.GetType().Name + "]."); output.Add("Trained with [" + state.data.NumberOfCases + "] cases."); return(output); }