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

update models to store formulas

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