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

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"
# 上传报告
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"
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"
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 = {
"data": {
@ -113,6 +112,7 @@ login_data = {
}
upload_data = {
"groupNo": '', # 用户组id
"funcModule": '研究报告信息',
"funcOperation": '上传原油价格预测报告',
"data": {
@ -130,6 +130,7 @@ upload_data = {
warning_data = {
"groupNo": '', # 用户组id
"funcModule": '原油特征停更预警',
"funcOperation": '原油特征停更预警',
"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'
@ -171,6 +205,7 @@ is_edbnamelist = False # 自定义特征对应上面的edbnamelist
is_update_eta = False # 预测结果上传到eta
is_update_report = 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_tow_month = True # 是否删除两个月不更新的特征

View File

@ -29,6 +29,7 @@ global_config.update({
'test_size': test_size,
'modelsindex': modelsindex,
'rote': rote,
'bdwd_items': bdwd_items,
# 特征工程开关
'is_del_corr': is_del_corr,
@ -36,6 +37,7 @@ global_config.update({
'is_eta': is_eta,
'is_update_eta': is_update_eta,
'is_fivemodels': is_fivemodels,
'is_update_predict_value': is_update_predict_value,
'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_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 配置
'APPID': APPID,
'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():
"""
主预测函数用于从 ETA 获取数据处理数据训练模型并进行预测
@ -113,28 +188,19 @@ def predict_main():
None
"""
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:
logger.info('从eta获取数据...')
signature = BinanceAPI(APPID, SECRET)
etadata = EtaReader(signature=signature,
classifylisturl=classifylisturl,
classifyidlisturl=classifyidlisturl,
edbcodedataurl=edbcodedataurl,
edbcodelist=edbcodelist,
edbdatapushurl=edbdatapushurl,
edbdeleteurl=edbdeleteurl,
edbbusinessurl=edbbusinessurl,
classifylisturl=global_config['classifylisturl'],
classifyidlisturl=global_config['classifyidlisturl'],
edbcodedataurl=global_config['edbcodedataurl'],
edbcodelist=global_config['edbcodelist'],
edbdatapushurl=global_config['edbdatapushurl'],
edbdeleteurl=global_config['edbdeleteurl'],
edbbusinessurl=global_config['edbbusinessurl'],
classifyId=global_config['ClassifyId'],
)
df_zhibiaoshuju, df_zhibiaoliebiao = etadata.get_eta_api_yuanyou_data(
data_set=data_set, dataset=dataset) # 原始数据,未处理
@ -348,16 +414,18 @@ def predict_main():
model_results3 = model_losss(sqlitedb, end_time=end_time)
logger.info('训练数据绘图end')
# # 模型报告
# logger.info('制作报告ing')
# title = f'{settings}--{end_time}-预测报告' # 报告标题
# reportname = f'Brent原油大模型月度预测--{end_time}.pdf' # 报告文件名
# reportname = reportname.replace(':', '-') # 替换冒号
# brent_export_pdf(dataset=dataset, num_models=5 if is_fivemodels else 22, time=end_time,
# reportname=reportname, sqlitedb=sqlitedb),
# 模型报告
logger.info('制作报告ing')
title = f'{settings}--{end_time}-预测报告' # 报告标题
reportname = f'Brent原油大模型月度预测--{end_time}.pdf' # 报告文件名
reportname = reportname.replace(':', '-') # 替换冒号
brent_export_pdf(dataset=dataset, num_models=5 if is_fivemodels else 22, time=end_time,
reportname=reportname, sqlitedb=sqlitedb),
# logger.info('制作报告end')
# logger.info('模型训练完成')
logger.info('制作报告end')
logger.info('模型训练完成')
push_market_value()
# # LSTM 单变量模型
# ex_Lstm(df,input_seq_len=input_size,output_seq_len=horizon,is_debug=is_debug,dataset=dataset)