|
@@ -1,3 +1,4 @@
|
|
|
|
+import json
|
|
import yaml
|
|
import yaml
|
|
import os
|
|
import os
|
|
import pandas as pd
|
|
import pandas as pd
|
|
@@ -8,6 +9,9 @@ from itertools import product
|
|
from datetime import datetime
|
|
from datetime import datetime
|
|
from statsmodels.stats.proportion import proportions_ztest
|
|
from statsmodels.stats.proportion import proportions_ztest
|
|
import traceback
|
|
import traceback
|
|
|
|
+import requests
|
|
|
|
+from utils.BaseClass import NpEncoder
|
|
|
|
+from config.url import estimate_people_number_url, headers
|
|
|
|
|
|
import logging
|
|
import logging
|
|
from concurrent_log import ConcurrentTimedRotatingFileHandler
|
|
from concurrent_log import ConcurrentTimedRotatingFileHandler
|
|
@@ -172,7 +176,7 @@ class BayesCombine(object):
|
|
out_dict['p_value'] = p_value
|
|
out_dict['p_value'] = p_value
|
|
out_dict['sample_size'] = self.sample_size
|
|
out_dict['sample_size'] = self.sample_size
|
|
|
|
|
|
- # TODO 调用人群预估覆盖接口,得到该组合的人群覆盖数
|
|
|
|
|
|
+ # TODO 调用人群预估覆盖接口,得到该组合的人群覆盖数 修改advertiser_id 的值 为 account_id
|
|
# 获取该项目下在投的账号
|
|
# 获取该项目下在投的账号
|
|
get_acc_sql = """select account_id from ctop_user_allocation where project_id = %s and account_status=0 limit 1""" % \
|
|
get_acc_sql = """select account_id from ctop_user_allocation where project_id = %s and account_status=0 limit 1""" % \
|
|
self.project_id
|
|
self.project_id
|
|
@@ -181,8 +185,16 @@ class BayesCombine(object):
|
|
request_data = {'region': city_code_transform(out_dict.get('city')),
|
|
request_data = {'region': city_code_transform(out_dict.get('city')),
|
|
'ages_range': age_code_transform(out_dict.get('age')),
|
|
'ages_range': age_code_transform(out_dict.get('age')),
|
|
'gender': gender_code_transform(out_dict.get('gender')),
|
|
'gender': gender_code_transform(out_dict.get('gender')),
|
|
- 'advertiser_id': account_id}
|
|
|
|
- out_dict['crowd_coverage_cnt'] = 1000
|
|
|
|
|
|
+ 'advertiser_id': 9774238}
|
|
|
|
+
|
|
|
|
+ request = requests.post(url=estimate_people_number_url,
|
|
|
|
+ headers=headers,
|
|
|
|
+ data=json.dumps(request_data, cls=NpEncoder))
|
|
|
|
+ response_data = json.loads(request.text)
|
|
|
|
+ if response_data['code'] == 0:
|
|
|
|
+ out_dict['crowd_coverage_cnt'] = response_data['data'].get('audience_prediction_num')
|
|
|
|
+ else:
|
|
|
|
+ logger.error("人群预估覆盖接口调用报错,请求数据为%s,返回数据为%s" % (str(request_data), str(response_data)))
|
|
|
|
|
|
out_dict['combine_estimate_prob'] = prob
|
|
out_dict['combine_estimate_prob'] = prob
|
|
out_dict['actual_prob'] = self.actual_prob
|
|
out_dict['actual_prob'] = self.actual_prob
|