|
1
|
|
|
# Author: Simon Blanke |
|
2
|
|
|
# Email: [email protected] |
|
3
|
|
|
# License: MIT License |
|
4
|
|
|
|
|
5
|
|
|
import itertools |
|
6
|
|
|
import pandas as pd |
|
7
|
|
|
|
|
8
|
|
|
from .collector._dataset_features import DatasetFeatures |
|
9
|
|
|
|
|
10
|
|
|
|
|
11
|
|
|
def expand_dataframe(data_pd, length): |
|
12
|
|
|
data_pd = pd.DataFrame(data_pd, index=range(length)) |
|
13
|
|
|
columns = data_pd.columns |
|
14
|
|
|
for column in columns: |
|
15
|
|
|
data_pd[column] = data_pd[column][0] |
|
16
|
|
|
|
|
17
|
|
|
return data_pd |
|
18
|
|
|
|
|
19
|
|
|
|
|
20
|
|
|
def merge_meta_data(features_from_dataset, features_from_model): |
|
21
|
|
|
length = len(features_from_model) |
|
22
|
|
|
features_from_dataset = expand_dataframe(features_from_dataset, length) |
|
23
|
|
|
|
|
24
|
|
|
features_from_dataset = features_from_dataset.reset_index() |
|
25
|
|
|
features_from_model = features_from_model.reset_index() |
|
26
|
|
|
|
|
27
|
|
|
if "index" in features_from_dataset.columns: |
|
28
|
|
|
features_from_dataset = features_from_dataset.drop("index", axis=1) |
|
29
|
|
|
if "index" in features_from_model.columns: |
|
30
|
|
|
features_from_model = features_from_model.drop("index", axis=1) |
|
31
|
|
|
|
|
32
|
|
|
all_features = pd.concat( |
|
33
|
|
|
[features_from_dataset, features_from_model], axis=1, ignore_index=False |
|
34
|
|
|
) |
|
35
|
|
|
|
|
36
|
|
|
return all_features |
|
37
|
|
|
|
|
38
|
|
|
|
|
39
|
|
|
class Recognizer: |
|
40
|
|
|
def __init__(self, _cand_): |
|
41
|
|
|
self.search_config = _cand_.search_config |
|
42
|
|
|
|
|
43
|
|
|
self.model_list = list(self.search_config.keys()) |
|
44
|
|
|
self.model_name = self.model_list[0] |
|
45
|
|
|
self.search_space = self.search_config[self.model_name] |
|
46
|
|
|
|
|
47
|
|
|
def get_test_metadata(self, data_train): |
|
48
|
|
|
self.collector_dataset = DatasetFeatures() |
|
49
|
|
|
|
|
50
|
|
|
md_dataset = self.collector_dataset.collect(data_train) |
|
51
|
|
|
md_model = self._features_from_model() |
|
52
|
|
|
|
|
53
|
|
|
X_test = merge_meta_data(md_dataset, md_model) |
|
54
|
|
|
|
|
55
|
|
|
return X_test |
|
56
|
|
|
|
|
57
|
|
|
def _features_from_model(self): |
|
58
|
|
|
keys, values = zip(*self.search_space.items()) |
|
59
|
|
|
meta_reg_input = [dict(zip(keys, v)) for v in itertools.product(*values)] |
|
60
|
|
|
|
|
61
|
|
|
md_model = pd.DataFrame(meta_reg_input) |
|
62
|
|
|
|
|
63
|
|
|
return md_model |
|
64
|
|
|
|