示例#1
0
        public Tuple <Vector, Vector> ConvertToVector(Dictionary <int, double> userOne, Dictionary <int, double> userTwo,
                                                      Similarity similarityType)
        {
            Vector vectorOne = new Vector();
            Vector vectorTwo = new Vector();

            // Loop through list of items rated
            foreach (var item in userOne.Keys)
            {
                if (similarityType == Similarity.Cosine)
                {
                    // If the item is rated by both, add to vector, else add 0 to second vector
                    if (userTwo.ContainsKey(item))
                    {
                        vectorOne.AddPoint(userOne[item]);
                        vectorTwo.AddPoint(userTwo[item]);
                    }
                    else
                    {
                        vectorOne.AddPoint(userOne[item]);
                        vectorTwo.AddPoint(0);
                    }
                }
                else
                {
                    // If the item is rated by both, add to vector
                    if (userTwo.ContainsKey(item))
                    {
                        vectorOne.AddPoint(userOne[item]);
                        vectorTwo.AddPoint(userTwo[item]);
                    }
                }
            }

            return(new Tuple <Vector, Vector>(vectorOne, vectorTwo));
        }
示例#2
0
        public Vector Mean(List <Vector> points, int length)
        {
            var newVector = new Vector(length);

            foreach (var vector in points)
            {
                for (int i = 0; i < newVector.GetPoints().Count; i++)
                {
                    newVector.AddPoint(vector.GetPoints()[i]);
                }
            }

            for (int i = 0; i < newVector.GetPoints().Count; i++)
            {
                newVector.GetPoints()[i] = (double)newVector.GetPoints()[i] / points.Count;
            }

            return(newVector);
        }