filter_strategy_base.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. # -*- coding:utf-8 -*-
  2. """
  3. @author: yq
  4. @time: 2024/1/2
  5. @desc: 特征筛选基类
  6. """
  7. import abc
  8. from typing import Dict, List
  9. from entitys import DataProcessConfigEntity, DataPreparedEntity, CandidateFeatureEntity, MetricFucEntity
  10. class FilterStrategyBase(metaclass=abc.ABCMeta):
  11. def __init__(self, data_process_config: DataProcessConfigEntity = None, *args, **kwargs):
  12. if data_process_config is not None:
  13. self._data_process_config = data_process_config
  14. else:
  15. self._data_process_config = DataProcessConfigEntity(*args, **kwargs)
  16. jupyter = self._data_process_config.jupyter
  17. if jupyter:
  18. from pandas.core.common import SettingWithCopyWarning
  19. import warnings
  20. warnings.simplefilter(action="ignore", category=SettingWithCopyWarning)
  21. warnings.simplefilter(action="ignore", category=RuntimeWarning)
  22. @property
  23. def data_process_config(self):
  24. return self._data_process_config
  25. @abc.abstractmethod
  26. def filter(self, *args, **kwargs) -> Dict[str, CandidateFeatureEntity]:
  27. """
  28. 特征筛选
  29. """
  30. pass
  31. @abc.abstractmethod
  32. def feature_generate(self, *args, **kwargs) -> DataPreparedEntity:
  33. """
  34. 特征转换
  35. """
  36. pass
  37. @abc.abstractmethod
  38. def feature_report(self, *args, **kwargs) -> Dict[str, MetricFucEntity]:
  39. """
  40. 特征报告
  41. """
  42. pass