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
|
|
|
|