00_test.sh 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #!/bin/sh
  2. set -x
  3. sh_path=$(cd $(dirname $0); pwd)
  4. source /root/anaconda3/bin/activate py37
  5. # 模型保存路径
  6. model_save_path=/dw/recommend/model/35_ad_model/model_xgb_351_1000_v2_1009_1015
  7. MODEL_OSS_PATH=oss://art-recommend.oss-cn-hangzhou.aliyuncs.com/zhangbo/
  8. model_name=model_xgb_351_1000_v2
  9. predict_analyse_file_path=/root/zhaohp/XGB/predict_analyse_file/20241014_351_1000_analyse.txt
  10. start_time=$(date +%s)
  11. # 保存模型评估的分析结果
  12. old_incr_rate_avg=0
  13. new_incr_rate_avg=0
  14. declare -A old_score_map
  15. declare -A new_score_map
  16. count=0
  17. max_line=10
  18. old_total_diff=0
  19. new_total_diff=0
  20. while read -r line && [ ${count} -lt ${max_line} ]; do
  21. # 使用 ! 取反判断,只有当行中不包含 "cid" 时才执行继续的逻辑
  22. if [[ "${line}" == *"cid"* ]]; then
  23. continue
  24. fi
  25. read -a numbers <<< "${line}"
  26. # 分数分别保存
  27. old_score_map[${numbers[0]}]=${numbers[6]}
  28. new_score_map[${numbers[0]}]=${numbers[7]}
  29. old_total_diff=$( echo "${old_total_diff} + ${numbers[6]}" | bc -l )
  30. new_total_diff=$( echo "${new_total_diff} + ${numbers[7]}" | bc -l )
  31. count=$((${count} + 1))
  32. done < "${predict_analyse_file_path}"
  33. old_incr_rate_avg=$( echo "scale=6; ${old_total_diff} / ${count}" | bc -l )
  34. new_incr_rate_avg=$( echo "scale=6; ${new_total_diff} / ${count}" | bc -l )
  35. echo "老模型Top10差异平均值: ${old_incr_rate_avg}"
  36. echo "新模型Top10差异平均值: ${new_incr_rate_avg}"
  37. echo "新老模型分数对比: "
  38. for cid in "${!new_score_map[@]}"; do
  39. echo "\t CID: $cid, 老模型分数: ${old_score_map[$cid]}, 新模型分数: ${new_score_map[$cid]}"
  40. done
  41. msg=" 广告模型文件更新完成"
  42. msg+="\n\t - 老模型Top10差异平均值: ${old_incr_rate_avg}"
  43. msg+="\n\t - 新模型Top10差异平均值: ${new_incr_rate_avg}"
  44. msg+="\n\t - 模型在HDFS中的路径: ${model_save_path}"
  45. msg+="\n\t - 模型上传路径: ${MODEL_OSS_PATH}/${model_name}.tar.gz"
  46. top10_msg = "| CID | 老模型 | 新模型 | \n| ---- | -------- | -------- | "
  47. for cid in "${!new_score_map[@]}"; do
  48. top10_msg="${top10_msg} \n| ${cid} | ${old_score_map[$cid]} | ${new_score_map[$cid]} | "
  49. done
  50. /root/anaconda3/bin/python ${sh_path}/ad_monitor_util.py --level info --msg "${msg}" --start "${start_time}" --elapsed "10000" --top10 "${top10_msg}"