モデル評価項目
Evaluatorプロジェクト: MySQLモデル予測結果 を取得 MySQL実績を取得 線下評価 評価結果をMySQL にアップロード
文書ディレクトリプロジェクト構造 1.1評価スケジュール 2スクリプト解析 2.1タイミングスクリプトevaluate.sh 1.2評価モジュールEvaluator 1プロジェクト構造
1.1評価スケジュール毎週5評価:先週金曜日の前の週の予測結果 を評価
Mon 07 Mon 14 Mon 21 Mon 28 ds_pred_1 ds_eval_1 ds_pred_2 ds_eval_2 ds_pred_3 ds_eval_3 Date of Pred_1 Date of Eval_1 Date of Pred_2 Date of Eval_2 Date of Pred_3 Date of Eval_3 Evaluate Schedule
2スクリプト解析
2.1タイミングスクリプトevaluate.sh毎週5日 を実行
1.2評価モジュールEvaluator予測外掛数、実封停数、予測外掛中被封停数を取得し、精度とリコール率 を計算する.
文書ディレクトリ
1.1評価スケジュール
Mon 07 Mon 14 Mon 21 Mon 28 ds_pred_1 ds_eval_1 ds_pred_2 ds_eval_2 ds_pred_3 ds_eval_3 Date of Pred_1 Date of Eval_1 Date of Pred_2 Date of Eval_2 Date of Pred_3 Date of Eval_3 Evaluate Schedule
2スクリプト解析
2.1タイミングスクリプトevaluate.sh
#!/usr/bin/env bash
#
WORK_DIR=/home/zhoujialiang/evaluate/
#
ds_eval=`date -d "-7 days" +%Y-%m-%d`
ds_pred_start=`date -d "$ds_eval -14 days" +%Y-%m-%d`
ds_pred_end=`date -d "$ds_eval -8 days" +%Y-%m-%d`
ds_ban_start=`date -d "$ds_eval -14 days" +%Y-%m-%d`
ds_ban_end=`date -d "$ds_eval -1 days" +%Y-%m-%d`
#
echo /usr/bin/python3 evaluate.py --tablename zhuxiangua --ds_pred_start $ds_pred_start --ds_pred_end $ds_pred_end --ds_ban_start $ds_ban_start --ds_ban_end $ds_ban_end
/usr/bin/python3 evaluate.py --tablename zhuxiangua --ds_pred_start $ds_pred_start --ds_pred_end $ds_pred_end --ds_ban_start $ds_ban_start --ds_ban_end $ds_ban_end
#
echo /usr/bin/python3 evaluate.py --tablename sanhuangua --ds_pred_start $ds_pred_start --ds_pred_end $ds_pred_end --ds_ban_start $ds_ban_start --ds_ban_end $ds_ban_end
/usr/bin/python3 evaluate.py --tablename sanhuangua --ds_pred_start $ds_pred_start --ds_pred_end $ds_pred_end --ds_ban_start $ds_ban_start --ds_ban_end $ds_ban_end
#
echo /usr/bin/python3 evaluate.py --tablename graph --ds_pred_start $ds_pred_start --ds_pred_end $ds_pred_end --ds_ban_start $ds_ban_start --ds_ban_end $ds_ban_end
/usr/bin/python3 evaluate.py --tablename graph --ds_pred_start $ds_pred_start --ds_pred_end $ds_pred_end --ds_ban_start $ds_ban_start --ds_ban_end $ds_ban_end
1.2評価モジュールEvaluator
class Evaluator(object):
"""MySQL
Attributes:
_conn: MySQLl
"""
def __init__(self, ids_pred, ids_ban):
self._ids_pred = set(ids_pred)
self._ids_ban = set(ids_ban)
def prec_recall(self):
"""
, , ;
Returns:
results: , {
cnt_pos:
cnt_true:
cnt_pos_true:
prec:
recall:
} key
"""
results = dict()
results['cnt_pos'] = len(self._ids_pred)
results['cnt_true'] = len(self._ids_ban)
results['cnt_pos_true'] = results['cnt_pos'] + results['cnt_true'] - len(set(list(self._ids_ban) + list(self._ids_pred)))
try:
results['prec'] = results['cnt_pos_true'] / results['cnt_pos']
except Exception as e:
logging.error('No predicted results! {}'.format(e))
try:
results['recall'] = results['cnt_pos_true'] / results['cnt_true']
except Exception as e:
logging.error('No banned role_ids! {}'.format(e))
return results