1
+ from cached_property import cached_property
1
2
from sklearn .model_selection import KFold
2
3
from everywhereml .IsPortableMixin import IsPortableMixin
3
4
from everywhereml .classification .utils import to_Xy
4
- from everywhereml .templates import Jinja
5
5
from everywhereml .data .plot import plot_confusion_matrix
6
+ from everywhereml .classification .MakesBinaryDecisionMixin import MakesBinaryDecisionMixin
7
+ from everywhereml .classification .MakesBinaryComplementDecisionMixin import MakesBinaryComplementDecisionMixin
6
8
7
9
8
10
class BaseClassifier (IsPortableMixin ):
@@ -29,17 +31,17 @@ def num_classes(self):
29
31
30
32
return len (set (self .y_train ))
31
33
32
- @property
34
+ @cached_property
33
35
def package_name (self ):
34
36
"""
35
37
Get base package name
36
- :return:
38
+ :return: str
37
39
"""
38
40
package_name = self .__module__ .__str__ ().replace ('everywhereml.classification.' , '' ).split ('.' )[0 ]
39
41
40
42
return package_name [0 ].upper () + package_name [1 :]
41
43
42
- @property
44
+ @cached_property
43
45
def classname (self ):
44
46
"""
45
47
Get class name
@@ -49,7 +51,7 @@ def classname(self):
49
51
50
52
return classname [0 ].upper () + classname [1 :]
51
53
52
- @property
54
+ @cached_property
53
55
def packages (self ):
54
56
"""
55
57
Get package names
@@ -59,6 +61,15 @@ def packages(self):
59
61
60
62
return [package [0 ].upper () + package [1 :] for package in packages ]
61
63
64
+ @property
65
+ def binary_complement (self ):
66
+ """
67
+ Some implementations output swapped labels for binary classification
68
+ If this property is True, fix the return value in the templates
69
+ :return: bool
70
+ """
71
+ return False
72
+
62
73
def clone (self ):
63
74
"""
64
75
Clone classifier
@@ -147,18 +158,20 @@ def port(self, language, classname=None, classmap=None, data=None, **kwargs):
147
158
148
159
def get_default_template_data (self ):
149
160
"""
150
- Get default data for template
161
+ Get default data for templates
151
162
:return: dict
152
163
"""
153
164
return {
154
165
'num_inputs' : self .num_inputs ,
155
166
'num_classes' : self .num_classes ,
156
- 'package_name' : self .package_name
167
+ 'package_name' : self .package_name ,
168
+ 'makes_binary_decision' : isinstance (self , MakesBinaryDecisionMixin ),
169
+ 'makes_binary_complement_decision' : isinstance (self , MakesBinaryComplementDecisionMixin )
157
170
}
158
171
159
172
def get_default_template_data_php (self , ** kwargs ):
160
173
"""
161
-
174
+ Get default data for PHP templates
162
175
:param kwargs:
163
176
:return:
164
177
"""
0 commit comments