mirror of
https://github.com/webclinic017/drift.git
synced 2026-07-28 03:08:01 +00:00
cc70d3f907
* feat(Selection): added prototype feature selection python script * feat(Utils): added some helpers for the future from Advances in Financial ML book * feat(Selection): added RFECV * feat(Selection): added configurable feature selection step into pipeline * feat(Config): added level_1 & level_2 default config, PCA before feature selection process starts * feat(Selection): added backup feature selector models if current one can't output feature importance, removed unnecessary array for level-2 models * fix(Training): deal with zero first value coming out of static models * feat(Sweep): added feature selection sweep * fix(Sweep): config problem * fix(Sweep): config * chore(Utils): removed unnecessary purged k-fold crossval class * feat(Config): added dimensionality_reduction as a separate flag * fix(Sweep): config updated * fix(Sweep): sweep name * chore(Config): updated level_2 config to the best performing configuation
44 lines
931 B
Python
44 lines
931 B
Python
|
|
from typing import Literal, Optional
|
|
from sklearn.base import clone
|
|
from abc import ABC, abstractmethod, abstractproperty
|
|
|
|
class Model(ABC):
|
|
|
|
data_scaling: Literal["scaled", "unscaled"]
|
|
feature_selection: Literal["on", "off"]
|
|
# data_format: Literal["wide", "narrow"]
|
|
only_column: Optional[str]
|
|
model_type: Literal['ml', 'static']
|
|
|
|
@abstractmethod
|
|
def fit(self, X, y, prev_model):
|
|
pass
|
|
|
|
@abstractmethod
|
|
def predict(self, X):
|
|
pass
|
|
|
|
@abstractmethod
|
|
def clone(self):
|
|
pass
|
|
|
|
|
|
class SKLearnModel(Model):
|
|
|
|
data_scaling = 'scaled'
|
|
only_column = None
|
|
feature_selection = 'on'
|
|
model_type = 'ml'
|
|
|
|
def __init__(self, model):
|
|
self.model = model
|
|
|
|
def fit(self, X, y, prev_model):
|
|
self.model.fit(X, y)
|
|
|
|
def predict(self, X):
|
|
return self.model.predict(X)
|
|
|
|
def clone(self):
|
|
return SKLearnModel(clone(self.model)) |