public static float ComputeCorrelation(HashSet<int> vector_i, HashSet<int> vector_j) { int cntr = 0; foreach (int k in vector_j) if (vector_i.Contains(k)) cntr++; return (float) cntr / (float) Math.Sqrt(vector_i.Count * vector_j.Count); }
[Test()] public void TestComputeCorrelation() { var vector1 = new HashSet<int>(); vector1.Add(0); vector1.Add(2); vector1.Add(4); var vector2 = new HashSet<int>(); vector2.Add(1); vector2.Add(3); vector2.Add(4); var cosine = new BinaryCosine(4); Assert.AreEqual(1 / 3f, cosine.ComputeCorrelation(vector1, vector2), DELTA); Assert.AreEqual(0f, cosine.ComputeCorrelation(vector1, new HashSet<int>()), DELTA); }