-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathauto_ml_example_test.py
77 lines (53 loc) · 2.17 KB
/
auto_ml_example_test.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
from unittest import TestCase
from search_space.dsl import Domain, RandomValue
from search_space.spaces import FunctionalConstraint
from tests.config import replay_function
from typing import Union
class AbsCluster:
NClusterDomain = Domain[int]()
def __init__(self, n_clusters: int = NClusterDomain) -> None:
self.n = n_clusters
class KMeans(AbsCluster):
pass
class AgglomerativeClustering(AbsCluster):
def __init__(
self,
n_clusters: int = AbsCluster.NClusterDomain,
affinity: str = Domain[str](
options=['euclidean', 'manhattan', "l1", "l2"]
)
) -> None:
super().__init__(n_clusters)
self.affinity = affinity
class AbsClassifier:
NCategoryDomain = Domain[int]()
def __init__(self, n_categories: int = NCategoryDomain) -> None:
self.n = n_categories
class KNN(AbsClassifier):
def __init__(self, n_categories: int = AbsClassifier.NCategoryDomain) -> None:
super().__init__(n_categories)
k = self.n * 2 - 1
class GaussianNB(AbsClassifier):
def __init__(self, n_categories: int = AbsClassifier.NCategoryDomain) -> None:
super().__init__(n_categories)
p = [1/n_categories for _ in range(n_categories)]
class SemiSupervisedClassifier:
ClusterDomain = Domain[Union[KMeans, AgglomerativeClustering]]()
def __init__(
self,
cluster: AbsCluster = ClusterDomain,
classifier: AbsClassifier = Domain[Union[KNN, GaussianNB]] | (
lambda x, c=ClusterDomain: x.NCategoryDomain == c.NClusterDomain
)
) -> None:
self.cluster, self.classifier = cluster, classifier
class AutoMLUnsupervisedExample(TestCase):
def test(self):
space = Domain[SemiSupervisedClassifier]()
@replay_function
def ______():
semi_supervised_model, _ = space.get_sample()
assert isinstance(semi_supervised_model, SemiSupervisedClassifier)
assert isinstance(semi_supervised_model.cluster, AbsCluster)
assert isinstance(semi_supervised_model.classifier, AbsClassifier)
assert semi_supervised_model.cluster.n == semi_supervised_model.classifier.n