Passed
Push — master ( b478a2...16a37b )
by Simon
01:57 queued 10s
created

merge_meta_data()   A

Complexity

Conditions 3

Size

Total Lines 17
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 12
nop 2
dl 0
loc 17
rs 9.8
c 0
b 0
f 0
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