Example #1
0
        public Point(Euclidian._2.Point P)
        {
            _coordenates = new float[dimension];

            X = P.X;
            Y = P.Y;
        }
Example #2
0
        public Dictionary <int, double> FindNearestNeighbour(Dictionary <int, Dictionary <int, double> > ratings,
                                                             int targetUser, double threshold, int max, Similarity similarityType)
        {
            //Get target user from list of ratings
            var target = ratings.FirstOrDefault(q => q.Key == targetUser).Value;

            foreach (var user in ratings)
            {
                if (user.Key != targetUser)
                {
                    double similarity = 0;

                    //Convert ratings of both users to vectors
                    var vectors = new Helper().ConvertToVector(user.Value, target, similarityType);

                    //Calculate similarity based on similarity type
                    switch (similarityType)
                    {
                    case Similarity.Euclidian:
                        similarity = new Euclidian().Calculate(vectors.Item1, vectors.Item2);
                        break;

                    case Similarity.Pearson:
                        similarity = new Pearson().Calculate(vectors.Item1, vectors.Item2);
                        break;

                    case Similarity.Cosine:
                        similarity = new Cosine().Calculate(vectors.Item1, vectors.Item2);
                        break;

                    default:
                        break;
                    }

                    //Check if similarity is above threshold
                    if (similarity > threshold && HasRatedAdditionalItems(user.Value, target))
                    {
                        if (neighbours.Count < max)
                        {
                            neighbours.Add(user.Key, similarity);
                        }
                        else
                        {
                            var lowest = neighbours.OrderBy(o => o.Value).First();
                            if (similarity > lowest.Value)
                            {
                                neighbours.Remove(lowest.Key);
                                neighbours.Add(user.Key, similarity);
                            }
                        }
                    }
                }
            }

            return(neighbours);
        }
Example #3
0
        private static void ExercisesLessonOne()
        {
            var listX = new List <double>();

            listX.Add(4);
            listX.Add(2);
            Vector x = new Vector(listX);

            var listAmy = new List <double>();

            listAmy.Add(5);
            listAmy.Add(5);
            Vector amy = new Vector(listAmy);

            var listClara = new List <double>();

            listClara.Add(4.75);
            listClara.Add(4.5);
            listClara.Add(5);
            listClara.Add(4.25);
            listClara.Add(4);
            Vector clara = new Vector(listClara);

            var listRobert = new List <double>();

            listRobert.Add(4);
            listRobert.Add(3);
            listRobert.Add(5);
            listRobert.Add(2);
            listRobert.Add(1);
            Vector robert = new Vector(listRobert);

            var listAmy2 = new List <double>();

            listAmy2.Add(3.0);
            Vector amyTwo = new Vector(listAmy2);

            var listX2 = new List <double>();

            listX2.Add(5.0);
            listX2.Add(2.5);
            listX2.Add(2.0);
            Vector xTwo = new Vector(listX2);

            var one   = new Euclidian().Calculate(amy, x);
            var two   = new Manhattan().Calculate(amy, x);
            var three = new Pearson().Calculate(clara, robert);
            var four  = new Cosine().Calculate(clara, robert);
            var five  = new Cosine().Calculate(amyTwo, xTwo);

            Console.WriteLine("\nEuclidian between Amy and X = " + one);
            Console.WriteLine("Manhattan between Amy and X = " + two);
            Console.WriteLine("Pearson between Clara and Robert = " + three);
            Console.WriteLine("Cosine between Clara and Robert = " + four);
            Console.WriteLine("Cosine between Amy and X (incomplete) = " + five);
        }
Example #4
0
        /// <summary>
        /// Prepares a <see cref="ESRI.ArcGIS.Client.Geometry.Polyline"/> instance for
        /// client-side geometric operations
        /// </summary>
        internal static Polyline PrepareForClientOps(this Polyline polyline)
        {
            validateProjectionForClientOps(polyline);

            Euclidian.Densify(polyline, 10000);

            if (polyline.SpatialReference.IsWebMercator())
            {
                polyline = (Polyline)_webMercator.ToGeographic(polyline);
            }

            polyline = (Polyline)Geometry.NormalizeCentralMeridian(polyline);

            return(polyline);
        }
Example #5
0
        public void Lcm_ThreeParameters(int a, int b, int c, int expectedResult)
        {
            var result = new Euclidian().Lcm(a, b, c);

            Assert.Equal(expectedResult, result);
        }
Example #6
0
        public void Lcm(int a, int b, int expectedResult)
        {
            var result = new Euclidian().Lcm(a, b);

            Assert.Equal(expectedResult, result);
        }