Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
A
alpha-mind
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Dr.李
alpha-mind
Commits
5addc3aa
Commit
5addc3aa
authored
Dec 07, 2017
by
Dr.李
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
model models
parent
7954719f
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
108 additions
and
1 deletion
+108
-1
api.py
alphamind/api.py
+4
-0
models.py
alphamind/data/dbmodel/models.py
+1
-0
__init__.py
alphamind/model/__init__.py
+6
-1
linearmodel.py
alphamind/model/linearmodel.py
+46
-0
treemodel.py
alphamind/model/treemodel.py
+51
-0
No files found.
alphamind/api.py
View file @
5addc3aa
...
@@ -26,7 +26,9 @@ from alphamind.data.neutralize import neutralize
...
@@ -26,7 +26,9 @@ from alphamind.data.neutralize import neutralize
from
alphamind.data.engines.sqlengine
import
factor_tables
from
alphamind.data.engines.sqlengine
import
factor_tables
from
alphamind.model.linearmodel
import
LinearRegression
from
alphamind.model.linearmodel
import
LinearRegression
from
alphamind.model.linearmodel
import
LassoRegression
from
alphamind.model.linearmodel
import
ConstLinearModel
from
alphamind.model.linearmodel
import
ConstLinearModel
from
alphamind.model.treemodel
import
RandomForestRegressor
from
alphamind.model.loader
import
load_model
from
alphamind.model.loader
import
load_model
from
alphamind.model.data_preparing
import
fetch_data_package
from
alphamind.model.data_preparing
import
fetch_data_package
from
alphamind.model.data_preparing
import
fetch_train_phase
from
alphamind.model.data_preparing
import
fetch_train_phase
...
@@ -81,7 +83,9 @@ __all__ = [
...
@@ -81,7 +83,9 @@ __all__ = [
'fetch_data_package'
,
'fetch_data_package'
,
'fetch_train_phase'
,
'fetch_train_phase'
,
'LinearRegression'
,
'LinearRegression'
,
'LassoRegression'
,
'ConstLinearModel'
,
'ConstLinearModel'
,
'RandomForestRegressor'
,
'load_model'
,
'load_model'
,
'NaiveExecutor'
,
'NaiveExecutor'
,
'ThresholdExecutor'
,
'ThresholdExecutor'
,
...
...
alphamind/data/dbmodel/models.py
View file @
5addc3aa
...
@@ -923,6 +923,7 @@ class PortfolioSettings(Base):
...
@@ -923,6 +923,7 @@ class PortfolioSettings(Base):
trade_date
=
Column
(
DateTime
,
primary_key
=
True
,
nullable
=
False
)
trade_date
=
Column
(
DateTime
,
primary_key
=
True
,
nullable
=
False
)
portfolio_name
=
Column
(
String
(
50
),
primary_key
=
True
,
nullable
=
False
)
portfolio_name
=
Column
(
String
(
50
),
primary_key
=
True
,
nullable
=
False
)
model_id
=
Column
(
BigInteger
,
primary_key
=
True
,
nullable
=
False
)
model_id
=
Column
(
BigInteger
,
primary_key
=
True
,
nullable
=
False
)
weight
=
Column
(
Float
(
53
),
nullable
=
False
)
class
Positions
(
Base
):
class
Positions
(
Base
):
...
...
alphamind/model/__init__.py
View file @
5addc3aa
...
@@ -6,8 +6,13 @@ Created on 2017-5-2
...
@@ -6,8 +6,13 @@ Created on 2017-5-2
"""
"""
from
alphamind.model.linearmodel
import
LinearRegression
from
alphamind.model.linearmodel
import
LinearRegression
from
alphamind.model.linearmodel
import
LassoRegression
from
alphamind.model.linearmodel
import
ConstLinearModel
from
alphamind.model.linearmodel
import
ConstLinearModel
from
alphamind.model.treemodel
import
RandomForestRegressor
__all__
=
[
'LinearRegression'
,
__all__
=
[
'LinearRegression'
,
'ConstLinearModel'
]
'LassoRegression'
,
\ No newline at end of file
'ConstLinearModel'
,
'RandomForestRegressor'
]
\ No newline at end of file
alphamind/model/linearmodel.py
View file @
5addc3aa
...
@@ -10,6 +10,7 @@ import arrow
...
@@ -10,6 +10,7 @@ import arrow
from
distutils.version
import
LooseVersion
from
distutils.version
import
LooseVersion
from
sklearn
import
__version__
as
sklearn_version
from
sklearn
import
__version__
as
sklearn_version
from
sklearn.linear_model
import
LinearRegression
as
LinearRegressionImpl
from
sklearn.linear_model
import
LinearRegression
as
LinearRegressionImpl
from
sklearn.linear_model
import
Lasso
from
PyFin.api
import
pyFinAssert
from
PyFin.api
import
pyFinAssert
from
alphamind.model.modelbase
import
ModelBase
from
alphamind.model.modelbase
import
ModelBase
from
alphamind.utilities
import
alpha_logger
from
alphamind.utilities
import
alpha_logger
...
@@ -93,6 +94,51 @@ class LinearRegression(ModelBase):
...
@@ -93,6 +94,51 @@ class LinearRegression(ModelBase):
return
self
.
impl
.
coef_
.
tolist
()
return
self
.
impl
.
coef_
.
tolist
()
class
LassoRegression
(
ModelBase
):
def
__init__
(
self
,
alpha
,
features
:
list
=
None
,
fit_intercept
:
bool
=
False
):
super
()
.
__init__
(
features
)
self
.
impl
=
Lasso
(
alpha
=
alpha
,
fit_intercept
=
fit_intercept
)
self
.
trained_time
=
None
def
fit
(
self
,
x
:
np
.
ndarray
,
y
:
np
.
ndarray
):
self
.
impl
.
fit
(
x
,
y
)
self
.
trained_time
=
arrow
.
now
()
.
format
(
"YYYY-MM-DD HH:mm:ss"
)
def
predict
(
self
,
x
:
np
.
ndarray
)
->
np
.
ndarray
:
return
self
.
impl
.
predict
(
x
)
def
save
(
self
)
->
dict
:
model_desc
=
super
()
.
save
()
model_desc
[
'internal_model'
]
=
self
.
impl
.
__class__
.
__module__
+
"."
+
self
.
impl
.
__class__
.
__name__
model_desc
[
'desc'
]
=
encode
(
self
.
impl
)
model_desc
[
'sklearn_version'
]
=
sklearn_version
model_desc
[
'trained_time'
]
=
self
.
trained_time
model_desc
[
'weight'
]
=
self
.
impl
.
coef_
.
tolist
()
return
model_desc
def
score
(
self
)
->
float
:
return
self
.
impl
.
score
()
@
classmethod
def
load
(
cls
,
model_desc
:
dict
):
obj_layout
=
cls
()
obj_layout
.
features
=
model_desc
[
'features'
]
obj_layout
.
trained_time
=
model_desc
[
'trained_time'
]
if
LooseVersion
(
sklearn_version
)
<
LooseVersion
(
model_desc
[
'sklearn_version'
]):
alpha_logger
.
warning
(
'Current sklearn version {0} is lower than the model version {1}. '
'Loaded model may work incorrectly.'
.
format
(
sklearn_version
,
model_desc
[
'sklearn_version'
]))
obj_layout
.
impl
=
decode
(
model_desc
[
'desc'
])
return
obj_layout
@
property
def
weights
(
self
):
return
self
.
impl
.
coef_
.
tolist
()
if
__name__
==
'__main__'
:
if
__name__
==
'__main__'
:
import
pprint
import
pprint
...
...
alphamind/model/treemodel.py
0 → 100644
View file @
5addc3aa
# -*- coding: utf-8 -*-
"""
Created on 2017-12-4
@author: cheng.li
"""
import
arrow
import
numpy
as
np
from
distutils.version
import
LooseVersion
from
sklearn
import
__version__
as
sklearn_version
from
sklearn.ensemble
import
RandomForestRegressor
as
RandomForestRegressorImpl
from
alphamind.model.modelbase
import
ModelBase
from
alphamind.utilities
import
alpha_logger
from
alphamind.utilities
import
encode
from
alphamind.utilities
import
decode
class
RandomForestRegressor
(
ModelBase
):
def
__init__
(
self
,
n_estimators
,
features
=
None
,
*
args
,
**
kwargs
):
super
()
.
__init__
(
features
)
self
.
impl
=
RandomForestRegressorImpl
(
n_estimators
,
*
args
,
**
kwargs
)
def
fit
(
self
,
x
:
np
.
ndarray
,
y
:
np
.
ndarray
):
self
.
impl
.
fit
(
x
,
y
)
self
.
trained_time
=
arrow
.
now
()
.
format
(
"YYYY-MM-DD HH:mm:ss"
)
def
predict
(
self
,
x
:
np
.
ndarray
)
->
np
.
ndarray
:
return
self
.
impl
.
predict
(
x
)
def
save
(
self
)
->
dict
:
model_desc
=
super
()
.
save
()
model_desc
[
'internal_model'
]
=
self
.
impl
.
__class__
.
__module__
+
"."
+
self
.
impl
.
__class__
.
__name__
model_desc
[
'desc'
]
=
encode
(
self
.
impl
)
model_desc
[
'sklearn_version'
]
=
sklearn_version
model_desc
[
'trained_time'
]
=
self
.
trained_time
@
classmethod
def
load
(
cls
,
model_desc
:
dict
):
obj_layout
=
cls
()
obj_layout
.
features
=
model_desc
[
'features'
]
obj_layout
.
trained_time
=
model_desc
[
'trained_time'
]
if
LooseVersion
(
sklearn_version
)
<
LooseVersion
(
model_desc
[
'sklearn_version'
]):
alpha_logger
.
warning
(
'Current sklearn version {0} is lower than the model version {1}. '
'Loaded model may work incorrectly.'
.
format
(
sklearn_version
,
model_desc
[
'sklearn_version'
]))
obj_layout
.
impl
=
decode
(
model_desc
[
'desc'
])
return
obj_layout
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment