示例#1
0
        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);
        }