[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); }
/// protected override void RetrainUser(int user_id) { base.RetrainUser(user_id); if (UpdateUsers) { for (int i = 0; i <= MaxUserID; i++) { correlation[user_id, i] = BinaryCosine.ComputeCorrelation(new HashSet <int>(data_user[user_id]), new HashSet <int>(data_user[i])); } } }
/// protected override void RetrainItem(int item_id) { base.RetrainUser(item_id); if (UpdateItems) { for (int i = 0; i <= MaxItemID; i++) { correlation[item_id, i] = BinaryCosine.ComputeCorrelation(new HashSet <int>(data_item[item_id]), new HashSet <int>(data_item[i])); } } }
[Test()] public void TestComputeCorrelation() { // create test objects 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); // test Assert.AreEqual(Math.Round(1 / 3d, 4), Math.Round(BinaryCosine.ComputeCorrelation(vector1, vector2), 4)); }