|
@@ -0,0 +1,66 @@
|
|
|
|
+#!/bin/sh
|
|
|
|
+set -x
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+source /root/anaconda3/bin/activate py37
|
|
|
|
+
|
|
|
|
+# 模型保存路径
|
|
|
|
+model_save_path=""
|
|
|
|
+MODEL_OSS_PATH=oss://art-recommend.oss-cn-hangzhou.aliyuncs.com/zhangbo/
|
|
|
|
+model_name=model_xgb_351_1000_v2
|
|
|
|
+
|
|
|
|
+# 保存模型评估的分析结果
|
|
|
|
+old_incr_rate_avg=0
|
|
|
|
+new_incr_rate_avg=0
|
|
|
|
+declare -A old_score_map
|
|
|
|
+declare -A new_score_map
|
|
|
|
+
|
|
|
|
+local count=0
|
|
|
|
+local max_line=10
|
|
|
|
+local old_total_diff=0
|
|
|
|
+local new_total_diff=0
|
|
|
|
+while read -r line && [ ${count} -lt ${max_line} ]; do
|
|
|
|
+
|
|
|
|
+ # 使用 ! 取反判断,只有当行中不包含 "cid" 时才执行继续的逻辑
|
|
|
|
+ if [[ "${line}" == *"cid"* ]]; then
|
|
|
|
+ continue
|
|
|
|
+ fi
|
|
|
|
+
|
|
|
|
+ read -a numbers <<< "${line}"
|
|
|
|
+
|
|
|
|
+ # 分数分别保存
|
|
|
|
+ old_score_map[${numbers[0]}]=${numbers[6]}
|
|
|
|
+ new_score_map[${numbers[0]}]=${numbers[7]}
|
|
|
|
+
|
|
|
|
+ old_total_diff=$( echo "${old_total_diff} + ${numbers[6]}" | bc -l )
|
|
|
|
+ new_total_diff=$( echo "${new_total_diff} + ${numbers[7]}" | bc -l )
|
|
|
|
+
|
|
|
|
+ count=$((${count} + 1))
|
|
|
|
+
|
|
|
|
+done < "${predict_analyse_file_path}"
|
|
|
|
+
|
|
|
|
+old_incr_rate_avg=$( echo "scale=6; ${old_total_diff} / ${count}" | bc -l )
|
|
|
|
+new_incr_rate_avg=$( echo "scale=6; ${new_total_diff} / ${count}" | bc -l )
|
|
|
|
+
|
|
|
|
+echo "老模型Top10差异平均值: ${old_incr_rate_avg}"
|
|
|
|
+echo "新模型Top10差异平均值: ${new_incr_rate_avg}"
|
|
|
|
+echo "新老模型分数对比: "
|
|
|
|
+for cid in "${!new_score_map[@]}"; do
|
|
|
|
+ echo "\t CID: $cid, 老模型分数: ${old_score_map[$cid]}, 新模型分数: ${new_score_map[$cid]}"
|
|
|
|
+done
|
|
|
|
+
|
|
|
|
+local msg="\n\t - 广告模型文件更新完成" \
|
|
|
|
+ "\n\t - 老模型Top10差异平均值: ${old_incr_rate_avg}" \
|
|
|
|
+ "\n\t - 新模型Top10差异平均值: ${new_incr_rate_avg}" \
|
|
|
|
+ "\n\t - 模型在HDFS中的路径: ${model_save_path}" \
|
|
|
|
+ "\n\t - 模型上传路径: ${MODEL_OSS_PATH}/${model_name}.tar.gz"
|
|
|
|
+
|
|
|
|
+local top10_msg = "| CID | 老模型 | 新模型 | \n| ---- | -------- | -------- | "
|
|
|
|
+for cid in "${!new_score_map[@]}"; do
|
|
|
|
+ top10_msg=="${top10_msg} \n| ${cid} | ${old_score_map[$cid]} | ${new_score_map[$cid]} | "
|
|
|
|
+done
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/root/anaconda3/bin/python ${sh_path}/ad_monitor_util.py --level info --msg "${msg}" --start "${start_time}" --elapsed "${elapsed}" --top10 "${top10_msg}"
|
|
|
|
+
|
|
|
|
+
|