# -*- coding:utf-8 -*-
"""
@author: yq
@time: 2024/1/2
@desc: 特征筛选基类
"""
import abc
from typing import Dict, List

from entitys import DataProcessConfigEntity, DataPreparedEntity, CandidateFeatureEntity, MetricFucEntity


class FilterStrategyBase(metaclass=abc.ABCMeta):

    def __init__(self, data_process_config: DataProcessConfigEntity, *args, **kwargs):
        self._data_process_config = data_process_config

    @property
    def data_process_config(self):
        return self._data_process_config

    @abc.abstractmethod
    def filter(self, *args, **kwargs) -> Dict[str, CandidateFeatureEntity]:
        pass

    @abc.abstractmethod
    def feature_generate(self, *args, **kwargs) -> DataPreparedEntity:
        pass

    @abc.abstractmethod
    def feature_report(self, *args, **kwargs) -> Dict[str, MetricFucEntity]:
        pass