def test_prob_item(self): self.__init_test(test.SMALL_DEL_FILE) smooth_func = 'JM' lamb = 0.5 p = SmoothEstimator(smooth_func, lamb, self.annots, 1) #Item probabilities self.assertAlmostEquals(p.prob_item(0), 5 / 10) self.assertAlmostEquals(p.prob_item(1), 1 / 10) self.assertAlmostEquals(p.prob_item(2), 2 / 10) self.assertAlmostEquals(p.prob_item(3), 1 / 10) self.assertAlmostEquals(p.prob_item(4), 1 / 10)
def test_prob_item_given_tag(self): self.__init_test(test.SMALL_DEL_FILE) lambda_ = 0.3 smooth_func = 'Bayes' p = SmoothEstimator(smooth_func, lambda_, self.annots, 1) for tag in [0, 1, 2, 3, 4, 5]: pis = [] pits = [] for item in [0, 1, 2, 3, 4]: pi = p.prob_item(item) pti = p.prob_tag_given_item(item, tag) pis.append(pi) pits.append(pti * pi) #Assert pis = np.array(pis) pis /= pis.sum() pits = np.array(pits) pits /= pits.sum() gamma_items = np.array([0, 1, 2, 3, 4]) assert_array_almost_equal(pis, p.prob_items(gamma_items)) assert_array_almost_equal(pits, p.prob_items_given_tag(tag, gamma_items)) self.assertAlmostEqual(1, sum(p.prob_items(gamma_items))) self.assertAlmostEqual(1, sum(p.prob_items_given_tag(tag, gamma_items)))
def test_prob_item_given_tag(self): self.__init_test(test.SMALL_DEL_FILE) lambda_ = 0.3 smooth_func = 'Bayes' p = SmoothEstimator(smooth_func, lambda_, self.annots, 1) for tag in [0, 1, 2, 3, 4, 5]: pis = [] pits = [] for item in [0, 1, 2, 3, 4]: pi = p.prob_item(item) pti = p.prob_tag_given_item(item, tag) pis.append(pi) pits.append(pti * pi) #Assert pis = np.array(pis) pis /= pis.sum() pits = np.array(pits) pits /= pits.sum() gamma_items = np.array([0, 1, 2, 3, 4]) assert_array_almost_equal(pis, p.prob_items(gamma_items)) assert_array_almost_equal(pits, p.prob_items_given_tag(tag, gamma_items)) self.assertAlmostEqual(1, sum(p.prob_items(gamma_items))) self.assertAlmostEqual( 1, sum(p.prob_items_given_tag(tag, gamma_items)))
def test_gamma_items_prob_items(self): self.__init_test(test.SMALL_DEL_FILE) lambda_ = 0.3 smooth_func = 'Bayes' p = SmoothEstimator(smooth_func, lambda_, self.annots, 1) gamma_items = np.array([1, 2]) pi_1 = p.prob_item(1) pi_2 = p.prob_item(2) gamma_pi = p.prob_items(gamma_items) self.assertEqual(gamma_pi[0], pi_1 / (pi_1 + pi_2)) self.assertEqual(gamma_pi[1], pi_2 / (pi_1 + pi_2))
def test_prob_items_given_user_and_tag(self): self.__init_test(test.SMALL_DEL_FILE) lambda_ = 0.3 smooth_func = 'Bayes' p = SmoothEstimator(smooth_func, lambda_, self.annots, 1) for user in [0, 1, 2]: for tag in [0, 1, 2, 3, 4, 5]: pitus = [] pius = [] for item in [0, 1, 2, 3, 4]: pi = p.prob_item(item) pti = p.prob_tag_given_item(item, tag) pui = p.prob_user_given_item(item, user) piu = pui * pi pitu = pti * pui * pi pitus.append(pitu) pius.append(piu) sum_pitus = sum(pitus) sum_pius = sum(pius) for item in [0, 1, 2, 3, 4]: pitus[item] = pitus[item] / sum_pitus pius[item] = pius[item] / sum_pius #Assert gamma_items = np.array([0, 1, 2, 3, 4]) assert_array_almost_equal(pius, p.prob_items_given_user(user, gamma_items)) assert_array_almost_equal(pitus, p.prob_items_given_user_tag(user, tag, gamma_items)) self.assertAlmostEqual(1, sum(p.prob_items_given_user(user, gamma_items))) self.assertAlmostEqual(1, sum(p.prob_items_given_user_tag(user, tag, gamma_items)))
def test_prob_items_given_user_and_tag(self): self.__init_test(test.SMALL_DEL_FILE) lambda_ = 0.3 smooth_func = 'Bayes' p = SmoothEstimator(smooth_func, lambda_, self.annots, 1) for user in [0, 1, 2]: for tag in [0, 1, 2, 3, 4, 5]: pitus = [] pius = [] for item in [0, 1, 2, 3, 4]: pi = p.prob_item(item) pti = p.prob_tag_given_item(item, tag) pui = p.prob_user_given_item(item, user) piu = pui * pi pitu = pti * pui * pi pitus.append(pitu) pius.append(piu) sum_pitus = sum(pitus) sum_pius = sum(pius) for item in [0, 1, 2, 3, 4]: pitus[item] = pitus[item] / sum_pitus pius[item] = pius[item] / sum_pius #Assert gamma_items = np.array([0, 1, 2, 3, 4]) assert_array_almost_equal( pius, p.prob_items_given_user(user, gamma_items)) assert_array_almost_equal( pitus, p.prob_items_given_user_tag(user, tag, gamma_items)) self.assertAlmostEqual( 1, sum(p.prob_items_given_user(user, gamma_items))) self.assertAlmostEqual( 1, sum(p.prob_items_given_user_tag(user, tag, gamma_items)))