Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
R
robo-dividend
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
wenwen.tang
robo-dividend
Commits
c7526068
Commit
c7526068
authored
Apr 26, 2024
by
wenwen.tang
😕
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加预测模型,增加8档预测
parent
ed794b2e
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
33 additions
and
11 deletions
+33
-11
EstimateMarketTrendV20.py
ai/EstimateMarketTrendV20.py
+13
-9
model_trainer.py
ai/model_trainer.py
+20
-2
No files found.
ai/EstimateMarketTrendV20.py
View file @
c7526068
...
@@ -11,24 +11,23 @@ from ai.training_data_builder import TrainingDataBuilder
...
@@ -11,24 +11,23 @@ from ai.training_data_builder import TrainingDataBuilder
from
api
import
DataSync
from
api
import
DataSync
# 截止日期
# 截止日期
#
max_date = None
max_date
=
None
max_date
=
'2024-03-01
'
# max_date = '2024-03-20
'
# max_date = '2024-01-11'
# max_date = '2024-01-11'
toForecast
=
True
# False means test, True means forecast
toForecast
=
True
# False means test, True means forecast
syncData
=
True
# 开启会同步数据库指数及基金数据
syncData
=
True
# 开启会同步数据库指数及基金数据
uploadData
=
Fals
e
# 开启会上传预测结果
uploadData
=
Tru
e
# 开启会上传预测结果
doReport
=
True
# 开启会生成Excel报告
doReport
=
True
# 开启会生成Excel报告
# 待预测指数
# 待预测指数
# PREDICT_LIST = [67, 121, 122, 123]
# PREDICT_LIST = [67, 121, 122, 123]
PREDICT_LIST
=
[
67
,
121
,
122
,
123
,
1
55
,
156
,
157
,
158
,
159
,
160
,
161
,
162
,
163
,
164
,
165
,
166
,
167
,
168
,
169
,
170
,
171
,
PREDICT_LIST
=
[
67
,
121
,
122
,
123
,
1
47
,
148
,
149
,
150
,
151
,
152
,
153
,
154
,
155
,
156
,
157
,
158
,
159
,
160
,
161
,
162
,
163
,
174
,
175
,
177
,
178
]
1
64
,
165
,
166
,
167
,
168
,
169
,
170
,
171
,
1
74
,
175
,
177
,
178
]
eco
=
[
65
,
66
,
74
,
134
]
eco
=
[
65
,
66
,
74
,
134
]
index
=
[
67
,
68
,
69
,
70
,
71
,
72
,
73
,
75
,
76
,
77
,
105
,
106
,
116
,
117
,
138
,
139
,
142
,
143
,
140
,
141
,
144
,
145
,
146
]
index
=
[
67
,
68
,
69
,
70
,
71
,
72
,
73
,
75
,
76
,
77
,
105
,
106
,
116
,
117
,
138
,
139
,
142
,
143
,
140
,
141
,
144
,
145
,
146
]
fund
=
[
121
,
122
,
123
,
155
,
156
,
157
,
158
,
159
,
160
,
161
,
162
,
163
,
164
,
165
,
166
,
167
,
168
,
169
,
170
,
171
,
174
,
175
,
fund
=
[
121
,
122
,
123
,
147
,
148
,
149
,
150
,
151
,
152
,
153
,
154
,
155
,
156
,
157
,
158
,
159
,
160
,
161
,
162
,
163
,
164
,
165
,
177
,
166
,
167
,
168
,
169
,
170
,
171
,
174
,
175
,
177
,
178
]
178
]
@
autowired
@
autowired
...
@@ -130,10 +129,15 @@ if __name__ == '__main__':
...
@@ -130,10 +129,15 @@ if __name__ == '__main__':
rf_model
=
trainer
.
train_random_forest
(
X_train
,
y_train
,
X_test
,
y_test
)
rf_model
=
trainer
.
train_random_forest
(
X_train
,
y_train
,
X_test
,
y_test
)
gbt_model
=
trainer
.
train_GBT
(
X_train
,
y_train
,
X_test
,
y_test
)
gbt_model
=
trainer
.
train_GBT
(
X_train
,
y_train
,
X_test
,
y_test
)
svc_model
=
trainer
.
train_SVC
(
X_train
,
y_train
,
X_test
,
y_test
)
svc_model
=
trainer
.
train_SVC
(
X_train
,
y_train
,
X_test
,
y_test
)
ensemble_model
=
trainer
.
ensemble_model
(
rf_model
,
gbt_model
,
svc_model
,
X_train
,
y_train
,
X_test
,
y_test
)
knn_model
=
trainer
.
train_nearest_neighbors
(
X_train
,
y_train
,
X_test
,
y_test
)
ada_model
=
trainer
.
train_AdaBoost
(
X_train
,
y_train
,
X_test
,
y_test
)
ensemble_model
=
trainer
.
ensemble_model
(
rf_model
,
gbt_model
,
svc_model
,
knn_model
,
ada_model
,
X_train
,
y_train
,
X_test
,
y_test
)
model_predict
=
{
'forest'
:
rf_model
.
predict
(
scaledX_forecast
),
model_predict
=
{
'forest'
:
rf_model
.
predict
(
scaledX_forecast
),
'gbt'
:
gbt_model
.
predict
(
scaledX_forecast
),
'gbt'
:
gbt_model
.
predict
(
scaledX_forecast
),
'svc'
:
svc_model
.
predict
(
scaledX_forecast
),
'svc'
:
svc_model
.
predict
(
scaledX_forecast
),
'knn'
:
knn_model
.
predict
(
scaledX_forecast
),
'adaboost'
:
ada_model
.
predict
(
scaledX_forecast
),
'ensemble'
:
ensemble_model
.
predict
(
scaledX_forecast
)}
'ensemble'
:
ensemble_model
.
predict
(
scaledX_forecast
)}
print
(
f
'预测结果:{model_predict}'
.
center
(
60
,
'+'
))
print
(
f
'预测结果:{model_predict}'
.
center
(
60
,
'+'
))
judgement
(
pid
,
infos_type
[
pid
],
model_predict
)
judgement
(
pid
,
infos_type
[
pid
],
model_predict
)
...
...
ai/model_trainer.py
View file @
c7526068
...
@@ -3,8 +3,10 @@ from abc import ABC
...
@@ -3,8 +3,10 @@ from abc import ABC
import
matplotlib.pyplot
as
plt
import
matplotlib.pyplot
as
plt
from
lightgbm
import
LGBMClassifier
from
lightgbm
import
LGBMClassifier
from
sklearn
import
svm
from
sklearn
import
svm
from
sklearn.ensemble
import
AdaBoostClassifier
from
sklearn.ensemble
import
RandomForestClassifier
,
VotingClassifier
from
sklearn.ensemble
import
RandomForestClassifier
,
VotingClassifier
from
sklearn.metrics
import
classification_report
,
confusion_matrix
,
ConfusionMatrixDisplay
,
accuracy_score
from
sklearn.metrics
import
classification_report
,
confusion_matrix
,
ConfusionMatrixDisplay
,
accuracy_score
from
sklearn.neighbors
import
KNeighborsClassifier
class
ModelTrainer
(
ABC
):
class
ModelTrainer
(
ABC
):
...
@@ -61,9 +63,25 @@ class ModelTrainer(ABC):
...
@@ -61,9 +63,25 @@ class ModelTrainer(ABC):
self
.
test_model
(
'Support Vector Machines'
,
classifierSVC
,
X_test
,
y_test
)
self
.
test_model
(
'Support Vector Machines'
,
classifierSVC
,
X_test
,
y_test
)
return
classifierSVC
return
classifierSVC
def
ensemble_model
(
self
,
rf_model
,
gbt_model
,
svc_model
,
X_train
,
y_train
,
X_test
,
y_test
):
def
train_nearest_neighbors
(
self
,
X_train
,
y_train
,
X_test
,
y_test
):
classifier
=
KNeighborsClassifier
()
classifier
.
fit
(
X_train
,
y_train
)
if
not
self
.
_toForecast
:
self
.
test_model
(
'K-Nearest Neighbors'
,
classifier
,
X_test
,
y_test
)
return
classifier
def
train_AdaBoost
(
self
,
X_train
,
y_train
,
X_test
,
y_test
):
classifier
=
AdaBoostClassifier
()
classifier
.
fit
(
X_train
,
y_train
)
if
not
self
.
_toForecast
:
self
.
test_model
(
'AdaBoost'
,
classifier
,
X_test
,
y_test
)
return
classifier
def
ensemble_model
(
self
,
rf_model
,
gbt_model
,
svc_model
,
knn_model
,
ada_model
,
X_train
,
y_train
,
X_test
,
y_test
):
# Create a dictionary of our models
# Create a dictionary of our models
estimators
=
[(
'rf'
,
rf_model
),
(
'gbt'
,
gbt_model
),
(
'svc'
,
svc_model
)]
estimators
=
[(
'rf'
,
rf_model
),
(
'gbt'
,
gbt_model
),
(
'svc'
,
svc_model
),
(
'knn'
,
knn_model
),
(
'AdaBoost'
,
ada_model
)]
# Create our voting classifier, inputting our models
# Create our voting classifier, inputting our models
ensemble
=
VotingClassifier
(
estimators
,
voting
=
'hard'
)
ensemble
=
VotingClassifier
(
estimators
,
voting
=
'hard'
)
# fit model to training data
# fit model to training data
...
...
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