def test_pearson_score(self): self.assertEqual(pearson_score([42], [42]), 1.0) self.assertEqual(pearson_score([0, 1, 2], [0, 1, 2]), 1.0) self.assertEqual(pearson_score([0, 1, 3], [0, 1, 2]), 0.9819805060619656) self.assertEqual(pearson_score([0, 1, 2], [0, 1, 3]), 0.9819805060619656)
def test_pearson_score(self): self.assertEquals(pearson_score([42], [42]), 0.0) self.assertEquals(pearson_score([0, 1, 2], [0, 1, 2]), 0.0) self.assertEquals(pearson_score([0, 1, 3], [0, 1, 2]), 0.051316701949486232) self.assertEquals(pearson_score([0, 1, 2], [0, 1, 3]), 0.051316701949486232)
def test_pearson_score(self): self.assertRaises(ZeroDivisionError, pearson_score, [42], [42]) self.assertRaises(ZeroDivisionError, pearson_score, [2, 2, 2], [1, 1, 1]) self.assertEqual(pearson_score([0, 1, 2], [0, 1, 2]), 1.0) self.assertEqual(pearson_score([0, 1, 3], [0, 1, 2]), 0.9819805060619656) self.assertEqual(pearson_score([0, 1, 2], [0, 1, 3]), 0.9819805060619656) self.assertEqual(pearson_score([2, 0, 0, 0], [0, 1, 1, 1]), -1)
def test_pearson_score(self): self.assertEqual(pearson_score([42], [42]), 0.0) self.assertEqual(pearson_score([0, 1, 2], [0, 1, 2]), 0.0) #The pearson algorithm was incorrect. My results have been verified #with a wolfram calculator here: #http://www.wolframalpha.com/widgets/view.jsp? #id=3038cb5ccf72f21a13801d9c78f70937 #One thing that I don't understand is why the pearson #calculator is returning 1-r . I've left it as is. self.assertEqual(pearson_score([0, 1, 3], [0, 1, 2]), 0.01801949393803437) self.assertEqual(pearson_score([0, 1, 2], [0, 1, 3]), 0.01801949393803437)
def compute_related(object_id, dataset): object_vector = None for entry, e_vector in dataset.items(): if entry.pk == object_id: object_vector = e_vector if not object_vector: return [] entry_related = {} for entry, e_vector in dataset.items(): if entry.pk != object_id: score = pearson_score(object_vector, e_vector) if score: entry_related[entry] = score related = sorted(entry_related.items(), key=lambda(k,v):(v,k)) return [i for i, s in related]
def compute_related(object_id, dataset): """Compute related entries to an entry with a dataset""" object_vector = None for entry, e_vector in dataset.items(): if entry.pk == object_id: object_vector = e_vector if not object_vector: return [] entry_related = {} for entry, e_vector in dataset.items(): if entry.pk != object_id: score = pearson_score(object_vector, e_vector) if score: entry_related[entry] = score related = sorted(entry_related.items(), key=lambda(k, v): (v, k)) return [rel[0] for rel in related]
def compute_related(object_id, dataset): """Compute related entries to an entry with a dataset""" object_vector = None for entry, e_vector in dataset.items(): if entry.pk == object_id: object_vector = e_vector if not object_vector: return [] entry_related = {} for entry, e_vector in dataset.items(): if entry.pk != object_id: score = pearson_score(object_vector, e_vector) if score: entry_related[entry] = score related = sorted(entry_related.items(), key=lambda (k, v): (v, k)) return [rel[0] for rel in related]