月度配置更新预测结果上传到市场信息平台

This commit is contained in:
workpc 2025-03-12 13:47:53 +08:00
parent b0ac51f4b2
commit c1f3da8340
3 changed files with 136 additions and 33 deletions

View File

@ -90,8 +90,8 @@ ClassifyId = 1214
# 变量定义--测试环境 # 变量定义--测试环境
server_host = '192.168.100.53' # server_host = '192.168.100.53' # 内网
server_host = '183.242.74.28 ' # 外网
login_pushreport_url = f"http://{server_host}:8080/jingbo-dev/api/server/login" login_pushreport_url = f"http://{server_host}:8080/jingbo-dev/api/server/login"
# 上传报告 # 上传报告
upload_url = f"http://{server_host}:8080/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave" upload_url = f"http://{server_host}:8080/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave"

View File

@ -90,15 +90,14 @@ ClassifyId = 1214
# 变量定义--测试环境 # 变量定义--测试环境
server_host = '192.168.100.53' # server_host = '192.168.100.53' # 内网
server_host = '183.242.74.28 ' # 外网
login_pushreport_url = f"http://{server_host}:8080/jingbo-dev/api/server/login" login_pushreport_url = f"http://{server_host}:8080/jingbo-dev/api/server/login"
upload_url = f"http://{server_host}:8080/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave" upload_url = f"http://{server_host}:8080/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave"
upload_warning_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/save" upload_warning_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/save"
query_data_list_item_nos_url = f"http://{server_host}:8080/jingbo-dev/api/warehouse/dwDataItem/queryDataListItemNos" query_data_list_item_nos_url = f"http://{server_host}:8080/jingbo-dev/api/warehouse/dwDataItem/queryDataListItemNos"
# 数据项推送接口 # 上传数据项值
push_data_balue_list = f"http://{server_host}:8080/jingbo-dev/api/dw/dataValue/pushDataValueList" push_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/dw/dataValue/pushDataValueList"
login_data = { login_data = {
"data": { "data": {
@ -113,6 +112,7 @@ login_data = {
} }
upload_data = { upload_data = {
"groupNo": '', # 用户组id
"funcModule": '研究报告信息', "funcModule": '研究报告信息',
"funcOperation": '上传原油价格预测报告', "funcOperation": '上传原油价格预测报告',
"data": { "data": {
@ -130,6 +130,7 @@ upload_data = {
warning_data = { warning_data = {
"groupNo": '', # 用户组id
"funcModule": '原油特征停更预警', "funcModule": '原油特征停更预警',
"funcOperation": '原油特征停更预警', "funcOperation": '原油特征停更预警',
"data": { "data": {
@ -149,6 +150,39 @@ query_data_list_item_nos_data = {
} }
} }
push_data_value_list_data = {
"funcModule": "数据表信息列表",
"funcOperation": "新增",
"data": [
{"dataItemNo": "91230600716676129",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.11
},
{"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.55
},
{"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY",
"dataDate": "20230113",
"dataStatus": "add",
"dataValue": 100.55
}
]
}
# 八大维度数据项编码
bdwd_items = {
'ciri': 'yyycbdwdcr',
'benzhou': 'yyycbdwdbz',
'cizhou': 'yyycbdwdcz',
'gezhou': 'yyycbdwdgz',
'ciyue': 'yyycbdwdcy',
'cieryue': 'yyycbdwdcey',
'cisanyue': 'yyycbdwdcsy',
'cisiyue': 'yyycbdwdcsiy',
}
# 北京环境数据库 # 北京环境数据库
host = '192.168.101.27' host = '192.168.101.27'
@ -171,6 +205,7 @@ is_edbnamelist = False # 自定义特征对应上面的edbnamelist
is_update_eta = False # 预测结果上传到eta is_update_eta = False # 预测结果上传到eta
is_update_report = False # 是否上传报告 is_update_report = False # 是否上传报告
is_update_warning_data = False # 是否上传预警数据 is_update_warning_data = False # 是否上传预警数据
is_update_predict_value = True # 是否上传预测值到市场信息平台
is_del_corr = 0.6 # 是否删除相关性高的特征,取值为 0-1 0 为不删除0.6 表示删除相关性小于0.6的特征 is_del_corr = 0.6 # 是否删除相关性高的特征,取值为 0-1 0 为不删除0.6 表示删除相关性小于0.6的特征
is_del_tow_month = True # 是否删除两个月不更新的特征 is_del_tow_month = True # 是否删除两个月不更新的特征

View File

@ -29,6 +29,7 @@ global_config.update({
'test_size': test_size, 'test_size': test_size,
'modelsindex': modelsindex, 'modelsindex': modelsindex,
'rote': rote, 'rote': rote,
'bdwd_items': bdwd_items,
# 特征工程开关 # 特征工程开关
'is_del_corr': is_del_corr, 'is_del_corr': is_del_corr,
@ -36,6 +37,7 @@ global_config.update({
'is_eta': is_eta, 'is_eta': is_eta,
'is_update_eta': is_update_eta, 'is_update_eta': is_update_eta,
'is_fivemodels': is_fivemodels, 'is_fivemodels': is_fivemodels,
'is_update_predict_value': is_update_predict_value,
'early_stop_patience_steps': early_stop_patience_steps, 'early_stop_patience_steps': early_stop_patience_steps,
# 时间参数 # 时间参数
@ -54,6 +56,10 @@ global_config.update({
'query_data_list_item_nos_url': query_data_list_item_nos_url, 'query_data_list_item_nos_url': query_data_list_item_nos_url,
'query_data_list_item_nos_data': query_data_list_item_nos_data, 'query_data_list_item_nos_data': query_data_list_item_nos_data,
# 上传数据项
'push_data_value_list_url': push_data_value_list_url,
'push_data_value_list_data': push_data_value_list_data,
# eta 配置 # eta 配置
'APPID': APPID, 'APPID': APPID,
'SECRET': SECRET, 'SECRET': SECRET,
@ -73,6 +79,75 @@ global_config.update({
}) })
def push_market_value():
logger.info('发送预测结果到市场信息平台')
# 读取预测数据和模型评估数据
predict_file_path = os.path.join(config.dataset, 'predict.csv')
model_eval_file_path = os.path.join(config.dataset, 'model_evaluation.csv')
try:
predictdata_df = pd.read_csv(predict_file_path)
top_models_df = pd.read_csv(model_eval_file_path)
except FileNotFoundError as e:
logger.error(f"文件未找到: {e}")
return
predictdata = predictdata_df.copy()
# 取模型前十
top_models = top_models_df['模型(Model)'].head(10).tolist()
# 计算前十模型的均值
predictdata_df['top_models_mean'] = predictdata_df[top_models].mean(axis=1)
# 打印日期和前十模型均值
print(predictdata_df[['ds', 'top_models_mean']])
# 准备要推送的数据
ciyue_date = predictdata_df['ds'].iloc[0].replace('-', '')
cieryue_date = predictdata_df['ds'].iloc[1].replace('-', '')
cisanyue_date = predictdata_df['ds'].iloc[2].replace('-', '')
cisiyue_date = predictdata_df['ds'].iloc[3].replace('-', '')
ciyue_mean = predictdata_df['top_models_mean'].iloc[0]
cieryue_mean = predictdata_df['top_models_mean'].iloc[1]
cisanyue_mean = predictdata_df['top_models_mean'].iloc[2]
cisieryue_mean = predictdata_df['top_models_mean'].iloc[3]
predictdata = [
{
"dataItemNo": global_config['bdwd_items']['ciyue'],
"dataDate": ciyue_date,
"dataStatus": "add",
"dataValue": ciyue_mean
},
{
"dataItemNo": global_config['bdwd_items']['cieryue'],
"dataDate": cieryue_date,
"dataStatus": "add",
"dataValue": cieryue_mean
},
{
"dataItemNo": global_config['bdwd_items']['cisanyue'],
"dataDate": cisanyue_date,
"dataStatus": "add",
"dataValue": cisanyue_mean
},
{
"dataItemNo": global_config['bdwd_items']['cisiyue'],
"dataDate": cisiyue_date,
"dataStatus": "add",
"dataValue": cisieryue_mean
}
]
print(predictdata)
# 推送数据到市场信息平台
try:
push_market_data(predictdata)
except Exception as e:
logger.error(f"推送数据失败: {e}")
def predict_main(): def predict_main():
""" """
主预测函数用于从 ETA 获取数据处理数据训练模型并进行预测 主预测函数用于从 ETA 获取数据处理数据训练模型并进行预测
@ -113,28 +188,19 @@ def predict_main():
None None
""" """
end_time = global_config['end_time'] end_time = global_config['end_time']
signature = BinanceAPI(APPID, SECRET)
etadata = EtaReader(signature=signature,
classifylisturl=classifylisturl,
classifyidlisturl=classifyidlisturl,
edbcodedataurl=edbcodedataurl,
edbcodelist=edbcodelist,
edbdatapushurl=edbdatapushurl,
edbdeleteurl=edbdeleteurl,
edbbusinessurl=edbbusinessurl
)
# 获取数据 # 获取数据
if is_eta: if is_eta:
logger.info('从eta获取数据...') logger.info('从eta获取数据...')
signature = BinanceAPI(APPID, SECRET) signature = BinanceAPI(APPID, SECRET)
etadata = EtaReader(signature=signature, etadata = EtaReader(signature=signature,
classifylisturl=classifylisturl, classifylisturl=global_config['classifylisturl'],
classifyidlisturl=classifyidlisturl, classifyidlisturl=global_config['classifyidlisturl'],
edbcodedataurl=edbcodedataurl, edbcodedataurl=global_config['edbcodedataurl'],
edbcodelist=edbcodelist, edbcodelist=global_config['edbcodelist'],
edbdatapushurl=edbdatapushurl, edbdatapushurl=global_config['edbdatapushurl'],
edbdeleteurl=edbdeleteurl, edbdeleteurl=global_config['edbdeleteurl'],
edbbusinessurl=edbbusinessurl, edbbusinessurl=global_config['edbbusinessurl'],
classifyId=global_config['ClassifyId'],
) )
df_zhibiaoshuju, df_zhibiaoliebiao = etadata.get_eta_api_yuanyou_data( df_zhibiaoshuju, df_zhibiaoliebiao = etadata.get_eta_api_yuanyou_data(
data_set=data_set, dataset=dataset) # 原始数据,未处理 data_set=data_set, dataset=dataset) # 原始数据,未处理
@ -348,16 +414,18 @@ def predict_main():
model_results3 = model_losss(sqlitedb, end_time=end_time) model_results3 = model_losss(sqlitedb, end_time=end_time)
logger.info('训练数据绘图end') logger.info('训练数据绘图end')
# # 模型报告 # 模型报告
# logger.info('制作报告ing') logger.info('制作报告ing')
# title = f'{settings}--{end_time}-预测报告' # 报告标题 title = f'{settings}--{end_time}-预测报告' # 报告标题
# reportname = f'Brent原油大模型月度预测--{end_time}.pdf' # 报告文件名 reportname = f'Brent原油大模型月度预测--{end_time}.pdf' # 报告文件名
# reportname = reportname.replace(':', '-') # 替换冒号 reportname = reportname.replace(':', '-') # 替换冒号
# brent_export_pdf(dataset=dataset, num_models=5 if is_fivemodels else 22, time=end_time, brent_export_pdf(dataset=dataset, num_models=5 if is_fivemodels else 22, time=end_time,
# reportname=reportname, sqlitedb=sqlitedb), reportname=reportname, sqlitedb=sqlitedb),
# logger.info('制作报告end') logger.info('制作报告end')
# logger.info('模型训练完成') logger.info('模型训练完成')
push_market_value()
# # LSTM 单变量模型 # # LSTM 单变量模型
# ex_Lstm(df,input_seq_len=input_size,output_seq_len=horizon,is_debug=is_debug,dataset=dataset) # ex_Lstm(df,input_seq_len=input_size,output_seq_len=horizon,is_debug=is_debug,dataset=dataset)