antiplugin_sl_zx项目:
- 数据样本
- 模型训练
- 外挂预测
1. 项目结构
1.1 Data模块
1.1.1 数据保存
zhoujialiang@***:~$ cd $DATD_PATH
zhoujialiang@***:$DATD_PATH$ ls
20181212 20181218 20181224 20181230 20190105 20190111 20190117 20190123 20190129
20181213 20181219 20181225 20181231 20190106 20190112 20190118 20190124 20190130
20181214 20181220 20181226 20190101 20190107 20190113 20190119 20190125 20190131
20181215 20181221 20181227 20190102 20190108 20190114 20190120 20190126 20190201
20181216 20181222 20181228 20190103 20190109 20190115 20190121 20190127 20190202
20181217 20181223 20181229 20190104 20190110 20190116 20190122 20190128 20190203
1.2 Training模块
1.2.1 迭代方案
Type |
Update Frequency |
Data Source Range |
Baseline |
不更新 |
始终使用初始四周的数据作为训练样本 |
Increment |
每周五 |
初始与baseline相同,之后每次更新新增一周的数据,即第 k k k次更新后包含了 k + 1 k+1 k+1周的数据 |
Sliding Window |
每周五 |
初始与baseline相同,之后每次更新替换新一周的数据,即始终只包含 4 4 4周的数据 |
1.2.2 甘特图
1.2.3 模型保存
- 模型目录命名规则:MODEL_DIR=
${ds_start}_${ds_range}
Type |
Example |
Baseline |
20181212_28 |
Increment |
20181212_35 , 20181212_42 , 20181212_49 |
Sliding Window |
20181219_28 , 20181226_28 , 20190102_28 |
zhoujialiang@***:~$ cd $MODEL_PATH
zhoujialiang@***:$MODEL_PATH$ ls
20181212_28 20181212_35 20181212_42 20181212_49 20181219_28 20181226_28 20190102_28
1.3 Prediction模块
1.3.1 预测方案
Step |
Operation |
Description |
1 |
样本获取 |
每十五分钟,获取最新数据样本,保存至对应目录 |
2 |
模型预测 |
样本获取完毕后,馈入模型预测结果 |
3 |
结果上传 |
预测结果保存至MySQL |
1.3.2 结果呈现
2. 启动脚本
2.1 Crontab定时任务
0 10 * * * bash /home/zhoujialiang/nsh_zhuxian_sl_auto/data.sh 41 1 >/home/zhoujialiang/cron_zhuxiangua_data.log 2>&1
25 17 * * 5 bash /home/zhoujialiang/nsh_zhuxian_sl_auto/train.sh >/home/zhoujialiang/cron_zhuxiangua_train.log 2>&1
*/15 * * * * bash /home/zhoujialiang/nsh_zhuxian_sl_auto/predict.sh 41 >/home/zhoujialiang/cron_zhuxiangua_pred.log 2>&1
2.2 Shell模块任务
WORK_DIR=/home/zhoujialiang/online_zhuxian
grade=$1
ds_num=$2
ds_start=`date -d "-3 days" +%Y%m%d`
echo /usr/bin/python3 $WORK_DIR/get_ids.py pos --end_grade $grade --ds_start $ds_start --ds_num $ds_num &&
/usr/bin/python3 $WORK_DIR/get_ids.py pos --end_grade $grade --ds_start $ds_start --ds_num $ds_num &&
echo /usr/bin/python3 $WORK_DIR/get_ids.py total --end_grade $grade --ds_start $ds_start --ds_num $ds_num &&
/usr/bin/python3 $WORK_DIR/get_ids.py total --end_grade $grade --ds_start $ds_start --ds_num $ds_num &&
echo /usr/bin/python3 $WORK_DIR/dataloader.py --end_grade $grade --ds_start $ds_start --ds_num $ds_num &&
/usr/bin/python3 $WORK_DIR/dataloader.py --end_grade $grade --ds_start $ds_start --ds_num $ds_num
WORK_DIR=/home/zhoujialiang/online_zhuxian
ds_start=`date -d "wednesday -5 weeks" +%Y%m%d`
stamp_end=`date -d "-2 days" +%s`
stamp_start=`date -d "20181212" +%s`
stamp_diff=`expr $stamp_end - $stamp_start`
day_diff=`expr $stamp_diff / 86400`
echo /usr/bin/python3 $WORK_DIR/MLPModel.py --ds_start 20181212 --ds_num $day_diff &&
/usr/bin/python3 $WORK_DIR/MLPModel.py --ds_start 20181212 --ds_num $day_diff &&
echo /usr/bin/python3 $WORK_DIR/MLPModel.py --ds_start $ds_start --ds_num 28 &&
/usr/bin/python3 $WORK_DIR/MLPModel.py --ds_start $ds_start --ds_num 28
echo `date -d "wednesday -1 weeks" +%Y%m%d`
echo `date -d "wednesday 0 weeks" +%Y%m%d`
echo `date -d "wednesday -1 weeks" +%Y%m%d`
echo `date -d "wednesday 0 weeks" +%Y%m%d`
WORK_DIR=/home/zhoujialiang/nsh_zhuxian_sl_auto
end_grade=$1
ds_pred=`date -d "0 days" +%Y%m%d`
ts_pred_cur=`date -d "0 days" "+%Y%m%d %H:%M:%S"`
ts_pred_start=`date -d "$ts_pred_cur 45 minutes ago" +%Y%m%d#%H:%M`
last_friday=`date -d "friday -1 weeks" +%Y%m%d`
ds_start=`date -d "$last_friday -30 days" +%Y%m%d`
stamp_end=`date -d "$last_friday -2 days" +%s`
stamp_start=`date -d "20181212" +%s`
stamp_diff=`expr $stamp_end - $stamp_start`
day_diff=`expr $stamp_diff / 86400`
echo /usr/bin/python3 $WORK_DIR/mlp_predict.py --end_grade $end_grade --ds_pred $ds_pred --ts_pred_start ${ts_pred_start}:00 --ds_start 20181212 --ds_num 28 --method mlp_41_baseline;
/usr/bin/python3 $WORK_DIR/mlp_predict.py --end_grade $end_grade --ds_pred $ds_pred --ts_pred_start ${ts_pred_start}:00 --ds_start 20181212 --ds_num 28 --method mlp_41_baseline;
echo /usr/bin/python3 $WORK_DIR/mlp_predict.py --end_grade $end_grade --ds_pred $ds_pred --ts_pred_start ${ts_pred_start}:00 --ds_start 20181212 --ds_num $day_diff --method mlp_41_incre;
/usr/bin/python3 $WORK_DIR/mlp_predict.py --end_grade $end_grade --ds_pred $ds_pred --ts_pred_start ${ts_pred_start}:00 --ds_start 20181212 --ds_num $day_diff --method mlp_41_incre;
echo /usr/bin/python3 $WORK_DIR/mlp_predict.py --end_grade $end_grade --ds_pred $ds_pred --ts_pred_start ${ts_pred_start}:00 --ds_start $ds_start --ds_num 28 --method mlp_41_window;
/usr/bin/python3 $WORK_DIR/mlp_predict.py --end_grade $end_grade --ds_pred $ds_pred --ts_pred_start ${ts_pred_start}:00 --ds_start $ds_start --ds_num 28 --method mlp_41_window
2.3 Python文件构成
2.3.1 文件分类
2.3.2 流程图