source: git/Singular/dyn_modules/machinelearning/ml_python/tests/model/test_predictor.py @ 133ae7

spielwiese
Last change on this file since 133ae7 was 133ae7, checked in by Murray Heymann <heymann.murray@…>, 5 years ago
Convert machine learning to dynamic module
  • Property mode set to 100644
File size: 2.7 KB
Line 
1import os
2import unittest
3import numpy as np
4
5from model.predictor import *
6from common.constants import KEYWORDS_FILE
7
8from common.keyword_vector import normalise_vector, vector_distance
9
10class TestPredictionMethods(unittest.TestCase):
11
12    def test_fit(self):
13        predictor = HelpPagePredictor()
14
15        self.assertRaises(AssertionError,
16                          predictor.fit,
17                          None,
18                          np.array([]))
19
20        self.assertRaises(AssertionError,
21                          predictor.fit,
22                          np.array([]),
23                          None)
24        predictor.fit(np.array([]),np.array([]))
25
26    def test_predict(self):
27        predictor = HelpPagePredictor()
28        vector1 = normalise_vector(np.array([1, 4, 10]))
29        vector2 = normalise_vector(np.array([1, 1, 1]))
30        vector3 = normalise_vector(np.array([3, 9, 3]))
31        vector4 = normalise_vector(np.array([1, 0, 0]))
32        vector5 = normalise_vector(np.array([0, 1, 0]))
33
34        vectors = np.array([vector1, vector2, vector3, vector4, vector5])
35        files = np.array(["file1", "file2", "file3", "file4", "file5"])
36
37        testvec1 = normalise_vector(np.array([1, 1, 1]))
38        testvec2 = normalise_vector(np.array([1, 3, 10]))
39
40        print("distance to 1")
41        print("vec1:", vector_distance(testvec1, vector1))
42        print("vec2:", vector_distance(testvec2, vector1))
43        print()
44        print("distance to 2")
45        print("vec1:", vector_distance(testvec1, vector2))
46        print("vec2:", vector_distance(testvec2, vector2))
47        print()
48        print("distance to 3")
49        print("vec1:", vector_distance(testvec1, vector3))
50        print("vec2:", vector_distance(testvec2, vector3))
51        print()
52        print("distance to 4")
53        print("vec1:", vector_distance(testvec1, vector4))
54        print("vec2:", vector_distance(testvec2, vector4))
55        print()
56        print("distance to 5")
57        print("vec1:", vector_distance(testvec1, vector5))
58        print("vec2:", vector_distance(testvec2, vector5))
59        print()
60
61        predictor.fit(vectors, files)
62        prediction = predictor.predict(np.array([]))
63        self.assertEqual(len(prediction), 0)
64        prediction = predictor.predict(np.array([testvec1]))
65        self.assertEqual(prediction[0][0], "file2")
66        self.assertEqual(len(prediction), 1)
67        prediction = predictor.predict(np.array([testvec1, testvec2]))
68        print("Prediction:")
69        print(prediction)
70        self.assertEqual(prediction[0][0], "file2")
71        self.assertEqual(prediction[1][0], "file1")
72        self.assertEqual(len(prediction), 2)
73
74
75if __name__ == '__main__':
76    unittest.main()
Note: See TracBrowser for help on using the repository browser.