Commit 139bddec authored by Dr.李's avatar Dr.李

update models to store formulas

parent 546b263a
......@@ -402,9 +402,9 @@ if __name__ == '__main__':
universe = Universe('zz500', ['hs300', 'zz500'])
neutralized_risk = ['SIZE']
res = fetch_predict_phase(engine, ['ep_q'],
'2018-01-08',
'5b',
universe,
16,
neutralized_risk=neutralized_risk)
'2012-01-05',
'5b',
universe,
16,
neutralized_risk=neutralized_risk)
print(res)
......@@ -32,8 +32,9 @@ class ConstLinearModel(ModelBase):
def __init__(self,
features: list = None,
weights: np.ndarray = None):
super().__init__(features)
weights: np.ndarray = None,
**kwargs):
super().__init__(features, **kwargs)
if features is not None and weights is not None:
pyFinAssert(len(features) == len(weights),
ValueError,
......@@ -57,7 +58,7 @@ class ConstLinearModel(ModelBase):
class LinearRegression(ModelBase):
def __init__(self, features: list = None, fit_intercept: bool = False, **kwargs):
super().__init__(features)
super().__init__(features, **kwargs)
self.impl = LinearRegressionImpl(fit_intercept=fit_intercept, **kwargs)
self.trained_time = None
......@@ -85,7 +86,7 @@ class LinearRegression(ModelBase):
class LassoRegression(ModelBase):
def __init__(self, alpha=0.01, features: list = None, fit_intercept: bool = False, **kwargs):
super().__init__(features)
super().__init__(features, **kwargs)
self.impl = Lasso(alpha=alpha, fit_intercept=fit_intercept, **kwargs)
self.trained_time = None
......@@ -113,7 +114,7 @@ class LassoRegression(ModelBase):
class LogisticRegression(ModelBase):
def __init__(self, features: list = None, fit_intercept: bool = False, **kwargs):
super().__init__(features)
super().__init__(features, **kwargs)
self.impl = LogisticRegressionImpl(fit_intercept=fit_intercept, **kwargs)
def save(self) -> dict:
......
......@@ -15,10 +15,13 @@ from alphamind.utilities import decode
class ModelBase(metaclass=abc.ABCMeta):
def __init__(self, features: list=None):
def __init__(self, features: list=None, formulas: dict=None, **kwargs):
if features is not None:
self.features = list(features)
else:
self.features = formulas
self.impl = None
self.formulas = formulas
self.trained_time = None
def fit(self, x: np.ndarray, y: np.ndarray):
......@@ -43,6 +46,7 @@ class ModelBase(metaclass=abc.ABCMeta):
features=list(self.features),
trained_time=self.trained_time,
desc=encode(self.impl),
formulas=encode(self.formulas),
internal_model=self.impl.__class__.__module__ + "." + self.impl.__class__.__name__)
return model_desc
......@@ -50,6 +54,7 @@ class ModelBase(metaclass=abc.ABCMeta):
def load(cls, model_desc: dict):
obj_layout = cls()
obj_layout.features = model_desc['features']
obj_layout.formulas = model_desc['formulas']
obj_layout.trained_time = model_desc['trained_time']
obj_layout.impl = decode(model_desc['desc'])
return obj_layout
......
......@@ -28,7 +28,7 @@ class RandomForestRegressor(ModelBase):
max_features: str='auto',
features: List=None,
**kwargs):
super().__init__(features)
super().__init__(features, **kwargs)
self.impl = RandomForestRegressorImpl(n_estimators=n_estimators,
max_features=max_features,
**kwargs)
......@@ -62,7 +62,7 @@ class RandomForestClassifier(ModelBase):
max_features: str='auto',
features: List = None,
**kwargs):
super().__init__(features)
super().__init__(features, **kwargs)
self.impl = RandomForestClassifierImpl(n_estimators=n_estimators,
max_features=max_features,
**kwargs)
......@@ -97,7 +97,7 @@ class XGBRegressor(ModelBase):
max_depth: int=3,
features: List=None,
**kwargs):
super().__init__(features)
super().__init__(features, **kwargs)
self.impl = XGBRegressorImpl(n_estimators=n_estimators,
learning_rate=learning_rate,
max_depth=max_depth,
......@@ -132,7 +132,7 @@ class XGBClassifier(ModelBase):
max_depth: int=3,
features: List = None,
**kwargs):
super().__init__(features)
super().__init__(features, **kwargs)
self.impl = XGBClassifierImpl(n_estimators=n_estimators,
learning_rate=learning_rate,
max_depth=max_depth,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment