public Point(Euclidian._2.Point P) { _coordenates = new float[dimension]; X = P.X; Y = P.Y; }
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); }
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); }
/// <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); }
public void Lcm_ThreeParameters(int a, int b, int c, int expectedResult) { var result = new Euclidian().Lcm(a, b, c); Assert.Equal(expectedResult, result); }
public void Lcm(int a, int b, int expectedResult) { var result = new Euclidian().Lcm(a, b); Assert.Equal(expectedResult, result); }