-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathtest_oll.py
120 lines (97 loc) · 3.97 KB
/
test_oll.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# -*- coding: utf-8 -*-
import os
import tempfile
from nose.tools import ok_, eq_, assert_raises, assert_almost_equals
import numpy as np
from scipy.sparse import csr_matrix
import oll
class Test_oll(object):
def __init__(self):
self.oll = oll.oll('PA1')
def test__init__(self):
for method in ('P', 'AP', 'PA', 'PA1', 'PA2', 'PAK', 'CW', 'AL'):
ok_(oll.oll(method))
def test_invalid__init__(self):
for method_name in ('AWP', 'PY'):
assert_raises(ValueError, oll.oll, method_name)
assert_raises(AssertionError, oll.oll, 0)
def test_add(self):
for val in (({1.5: 1.0}, 1), ({-1.5: 1.0}, -1)):
assert_raises(NotImplementedError, self.oll.add, *val)
for val in (({10: 1.0}, 3), ({10: 1.0}, 0), ({10: 1.0}, -3)):
assert_raises(ValueError, self.oll.add, *val)
def test_classify(self):
self.oll.add({0: 1.0, 1: 2.0, 2: -1.0}, 1)
self.oll.add({0: -0.5, 1: 1.0, 2: -0.5}, -1)
assert_almost_equals(self.oll.classify({0: 1.0, 1: 1.0}), 0.171429, 6)
def test_save_and_load(self):
try:
self.oll = oll.oll('PA1')
self.oll.add({1: 1.0}, 1)
filename = tempfile.mkstemp()[1]
self.oll.save(filename)
ok_(os.path.exists(filename))
self.oll = oll.oll('PA1')
self.oll.load(filename)
assert_almost_equals(self.oll.classify({0: 1.0, 1: 1.0}), 0.5, 6)
finally:
os.remove(filename)
def test_testFile(self):
try:
self.oll = oll.oll('PA1')
self.oll.add({0: 1.0, 1: 1.0}, 1)
self.oll.add({2: -1.0, 3: -1.0}, -1)
model_filename = tempfile.mkstemp()[1]
self.oll.save(model_filename)
test_filename = tempfile.mkstemp()[1]
with open(test_filename, 'w') as fd:
fd.write('+1 0:1.0 1:1.0\n')
fd.write('-1 2:-1.0 3:-1.0\n')
actual = self.oll.testFile(test_filename, 0)
desired = {
'accuracy': 100.0,
'true-positive': 1,
'false-positive': 0,
'true-negative': 1,
'false-negative': 0
}
eq_(actual, desired)
finally:
os.remove(model_filename)
os.remove(test_filename)
def test_setC(self):
self.oll.setC(0.14)
def test_setBias(self):
self.oll.setBias(0.14)
def test_set_params(self):
self.oll.set_params(C=0.14, bias=0.14)
eq_(self.oll.get_params(), {'C': 0.14, 'bias': 0.14})
def test_get_params(self):
self.oll.set_params(C=0.14, bias=0.14)
eq_(self.oll.get_params(), {'C': 0.14, 'bias': 0.14})
def test_decision_function(self):
np_array = np.array([[1.0, 2.0, -1.0], [-0.5, 1.0, -0.5]])
y = [1, -1]
self.oll.fit(np_array, y)
print(self.oll.decision_function(np_array))
assert_almost_equals(self.oll.decision_function(np_array),
[-0.17142848670482635, -0.48571422696113586], 6)
def test_fit(self):
np_array = np.array([[1.0, 2.0, -1.0], [-0.5, 1.0, -0.5]])
y = [1, -1]
self.oll.fit(np_array, y)
assert_almost_equals(self.oll.classify({0: 1.0, 1: 1.0}), 0.171429, 6)
self.oll = oll.oll('PA1')
sparse_matrix = csr_matrix([[1.0, 2.0, -1.0], [-0.5, 1.0, -0.5]])
self.oll.fit(sparse_matrix, y)
assert_almost_equals(self.oll.classify({0: 1.0, 1: 1.0}), 0.171429, 6)
self.oll = oll.oll('PA1')
self.oll.fit(sparse_matrix, np.array([1, -1]))
assert_raises(AssertionError, self.oll.fit, np_array, [1, 0])
def test_predict(self):
self.oll.add({0: 1.0, 1: 2.0, 2: -1.0}, 1)
self.oll.add({0: -0.5, 1: 1.0, 2: -0.5}, -1)
np_array = np.array([[1.0, 1.0]])
eq_(self.oll.predict(np_array), [1])
sparse_matrix = csr_matrix([[1.0, 1.0]])
eq_(self.oll.predict(sparse_matrix), [1])