|
@@ -125,7 +125,26 @@ def pack_result_to_csv(filename, sort_columns=None, filepath=config_.DATA_DIR_PA
|
|
:param sort_columns: 指定排序列名列名,type-list, 默认为None
|
|
:param sort_columns: 指定排序列名列名,type-list, 默认为None
|
|
:param filepath: csv文件存放路径,默认为config_.DATA_DIR_PATH
|
|
:param filepath: csv文件存放路径,默认为config_.DATA_DIR_PATH
|
|
:param ascending: 是否按指定列的数组升序排列,默认为True,即升序排列
|
|
:param ascending: 是否按指定列的数组升序排列,默认为True,即升序排列
|
|
- :param data: 数据
|
|
|
|
|
|
+ :param data: 数据, type-dict
|
|
|
|
+ :return: None
|
|
|
|
+ """
|
|
|
|
+ if not os.path.exists(filepath):
|
|
|
|
+ os.makedirs(filepath)
|
|
|
|
+ file = os.path.join(filepath, filename)
|
|
|
|
+ df = pd.DataFrame(data=data)
|
|
|
|
+ if sort_columns:
|
|
|
|
+ df = df.sort_values(by=sort_columns, ascending=ascending)
|
|
|
|
+ df.to_csv(file, index=False)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def pack_list_result_to_csv(filename, data, sort_columns=None, filepath=config_.DATA_DIR_PATH, ascending=True):
|
|
|
|
+ """
|
|
|
|
+ 打包数据并存入csv, 数据为字典列表
|
|
|
|
+ :param filename: csv文件名
|
|
|
|
+ :param data: 数据,type-list [{}, {},...]
|
|
|
|
+ :param sort_columns: 指定排序列名列名,type-list, 默认为None
|
|
|
|
+ :param filepath: csv文件存放路径,默认为config_.DATA_DIR_PATH
|
|
|
|
+ :param ascending: 是否按指定列的数组升序排列,默认为True,即升序排列
|
|
:return: None
|
|
:return: None
|
|
"""
|
|
"""
|
|
if not os.path.exists(filepath):
|
|
if not os.path.exists(filepath):
|
|
@@ -147,25 +166,44 @@ def predict():
|
|
# 预测
|
|
# 预测
|
|
y_ = model.predict(x)
|
|
y_ = model.predict(x)
|
|
log_.info('predict finished!')
|
|
log_.info('predict finished!')
|
|
|
|
+
|
|
# 将结果进行归一化到[0, 100]
|
|
# 将结果进行归一化到[0, 100]
|
|
normal_y_ = data_normalization(list(y_))
|
|
normal_y_ = data_normalization(list(y_))
|
|
log_.info('normalization finished!')
|
|
log_.info('normalization finished!')
|
|
|
|
+
|
|
|
|
+ # 按照normal_y_降序排序
|
|
|
|
+ predict_data = []
|
|
|
|
+ for i, video_id in enumerate(video_ids):
|
|
|
|
+ data = {'video_id': video_id, 'normal_y_': normal_y_[i], 'y_': y_[i], 'y': y[i]}
|
|
|
|
+ predict_data.append(data)
|
|
|
|
+ predict_data_sorted = sorted(predict_data, key=lambda temp: temp['normal_y_'], reverse=True)
|
|
|
|
+
|
|
|
|
+ # 按照排序,从100以固定差值做等差递减,以该值作为rovScore
|
|
|
|
+ predict_result = []
|
|
|
|
+ redis_data = {}
|
|
|
|
+ json_data = []
|
|
|
|
+ for j, item in enumerate(predict_data_sorted):
|
|
|
|
+ video_id = int(item['video_id'])
|
|
|
|
+ rov_score = 100 - j * config_.ROV_SCORE_D
|
|
|
|
+ item['rov_score'] = rov_score
|
|
|
|
+ predict_result.append(item)
|
|
|
|
+ redis_data[video_id] = rov_score
|
|
|
|
+ json_data.append({'videoId': video_id, 'rovScore': rov_score})
|
|
|
|
+
|
|
# 打包预测结果存入csv
|
|
# 打包预测结果存入csv
|
|
- predict_data = {'normal_y_': normal_y_, 'y_': y_, 'y': y, 'video_ids': video_ids}
|
|
|
|
predict_result_filename = 'predict.csv'
|
|
predict_result_filename = 'predict.csv'
|
|
- pack_result_to_csv(filename=predict_result_filename, sort_columns=['normal_y_'], ascending=False, **predict_data)
|
|
|
|
|
|
+ pack_list_result_to_csv(filename=predict_result_filename, sort_columns=['rov_score'],
|
|
|
|
+ ascending=False, data=predict_result)
|
|
|
|
+
|
|
# 上传redis
|
|
# 上传redis
|
|
- redis_data = {}
|
|
|
|
- json_data = []
|
|
|
|
- for i in range(len(video_ids)):
|
|
|
|
- redis_data[video_ids[i]] = normal_y_[i]
|
|
|
|
- json_data.append({'videoId': video_ids[i], 'rovScore': normal_y_[i]})
|
|
|
|
key_name = config_.RECALL_KEY_NAME_PREFIX + time.strftime('%Y%m%d')
|
|
key_name = config_.RECALL_KEY_NAME_PREFIX + time.strftime('%Y%m%d')
|
|
redis_helper = RedisHelper()
|
|
redis_helper = RedisHelper()
|
|
redis_helper.add_data_with_zset(key_name=key_name, data=redis_data)
|
|
redis_helper.add_data_with_zset(key_name=key_name, data=redis_data)
|
|
log_.info('data to redis finished!')
|
|
log_.info('data to redis finished!')
|
|
|
|
+
|
|
# 清空修改ROV的视频数据
|
|
# 清空修改ROV的视频数据
|
|
redis_helper.del_keys(key_name=config_.UPDATE_ROV_KEY_NAME)
|
|
redis_helper.del_keys(key_name=config_.UPDATE_ROV_KEY_NAME)
|
|
|
|
+
|
|
# 通知后端更新数据
|
|
# 通知后端更新数据
|
|
# result = request_post(request_url=config_.NOTIFY_BACKEND_UPDATE_ROV_SCORE_URL, request_data={'videos': json_data})
|
|
# result = request_post(request_url=config_.NOTIFY_BACKEND_UPDATE_ROV_SCORE_URL, request_data={'videos': json_data})
|
|
# if result['code'] == 0:
|
|
# if result['code'] == 0:
|