聚烯烃更改预测标的为PP期货

This commit is contained in:
workpc 2025-07-07 13:36:50 +08:00
parent 830f369dc6
commit 7ed37c23cb
3 changed files with 39 additions and 34 deletions

View File

@ -167,7 +167,7 @@ ClassifyId = 1161
# "funcModule": '研究报告信息', # "funcModule": '研究报告信息',
# "funcOperation": '上传聚烯烃PP价格预测报告', # "funcOperation": '上传聚烯烃PP价格预测报告',
# "data": { # "data": {
# "groupNo": '000211' # 用户组编号 # "groupNo": '000211', # 用户组编号
# "ownerAccount": '36541', # 报告所属用户账号  36541 - 贾青雪 # "ownerAccount": '36541', # 报告所属用户账号  36541 - 贾青雪
# "reportType": 'OIL_PRICE_FORECAST', # 报告类型固定为OIL_PRICE_FORECAST # "reportType": 'OIL_PRICE_FORECAST', # 报告类型固定为OIL_PRICE_FORECAST
# "fileName": '', # 文件名称 # "fileName": '', # 文件名称
@ -176,7 +176,7 @@ ClassifyId = 1161
# "smartBusinessClassCode": 'JXTJGYCBG', # 分析报告分类编码 # "smartBusinessClassCode": 'JXTJGYCBG', # 分析报告分类编码
# "reportEmployeeCode": "E40482", # 报告人  E40482  - 管理员  0000027663 - 刘小朋   # "reportEmployeeCode": "E40482", # 报告人  E40482  - 管理员  0000027663 - 刘小朋  
# "reportDeptCode": "JXTJGYCBG", # 报告部门 - 002000621000  SH期货研究部   # "reportDeptCode": "JXTJGYCBG", # 报告部门 - 002000621000  SH期货研究部  
# "productGroupCode": "RAW_MATERIAL"   # 商品分类 # "productGroupCode": "RAW_MATERIAL" # 商品分类
# } # }
# } # }
@ -196,8 +196,9 @@ ClassifyId = 1161
# "funcOperation": "查询", # "funcOperation": "查询",
# "data": { # "data": {
# "dateStart": "20200101", # "dateStart": "20200101",
# "dateEnd": "20241231", # "dateEnd": "",
# "dataItemNoList": ["Brentzdj", "Brentzgj"] # 数据项编码,代表 brent最低价和最高价 # # 数据项编码,代表 PP期货 价格
# "dataItemNoList": ["MAIN_CONFT_SETTLE_PRICE"]
# } # }
# } # }
@ -334,8 +335,9 @@ query_data_list_item_nos_data = {
"funcOperation": "查询", "funcOperation": "查询",
"data": { "data": {
"dateStart": "20200101", "dateStart": "20200101",
"dateEnd": "20241231", "dateEnd": "",
"dataItemNoList": ["Brentzdj", "Brentzgj"] # 数据项编码,代表 brent最低价和最高价 # 数据项编码,代表 PP期货 价格
"dataItemNoList": ["MAIN_CONFT_SETTLE_PRICE"]
} }
} }
@ -424,8 +426,8 @@ DEFAULT_CONFIG = {
# 开关 # 开关
is_train = True # 是否训练 is_train = True # 是否训练
is_debug = False # 是否调试 is_debug = False # 是否调试
is_eta = True # 是否使用eta接口 is_eta = False # 是否使用eta接口
is_market = False # 是否通过市场信息平台获取特征 ,在is_eta 为true 的情况下生效 is_market = True # 是否通过市场信息平台获取特征 ,在is_eta 为true 的情况下生效
is_timefurture = True # 是否使用时间特征 is_timefurture = True # 是否使用时间特征
is_fivemodels = False # 是否使用之前保存的最佳的5个模型 is_fivemodels = False # 是否使用之前保存的最佳的5个模型
is_edbcode = False # 特征使用edbcoding列表中的 is_edbcode = False # 特征使用edbcoding列表中的
@ -457,15 +459,18 @@ if add_kdj and is_edbnamelist:
edbnamelist = edbnamelist+['K', 'D', 'J'] edbnamelist = edbnamelist+['K', 'D', 'J']
# 模型参数 # 模型参数
y = 'AVG-金能大唐久泰青州' # y = 'AVG-金能大唐久泰青州'
avg_cols = [ # avg_cols = [
'PP拉丝1102K出厂价青州国家能源宁煤', # 'PP拉丝1102K出厂价青州国家能源宁煤',
'PP拉丝L5E89出厂价华北第二区域内蒙古久泰新材料', # 'PP拉丝L5E89出厂价华北第二区域内蒙古久泰新材料',
'PP拉丝L5E89出厂价河北、鲁北大唐内蒙多伦', # 'PP拉丝L5E89出厂价河北、鲁北大唐内蒙多伦',
'PP拉丝HP550J市场价青岛金能化学' # 'PP拉丝HP550J市场价青岛金能化学'
] # ]
offsite = 80 # offsite = 80
offsite_col = ['PP拉丝HP550J市场价青岛金能化学'] # offsite_col = ['PP拉丝HP550J市场价青岛金能化学']
y = 'MAIN_CONFT_SETTLE_PRICE'
horizon = 5 # 预测的步长 horizon = 5 # 预测的步长
input_size = 40 # 输入序列长度 input_size = 40 # 输入序列长度
train_steps = 50 if is_debug else 1000 # 训练步数,用来限定epoch次数 train_steps = 50 if is_debug else 1000 # 训练步数,用来限定epoch次数

View File

@ -993,14 +993,14 @@ def datachuli_juxiting(df_zhibiaoshuju, df_zhibiaoliebiao, datecol='date', end_t
# date转为pddate # date转为pddate
df.rename(columns={datecol: 'ds'}, inplace=True) df.rename(columns={datecol: 'ds'}, inplace=True)
# 指定列统一减少数值 # # 指定列统一减少数值
print(global_config.keys()) # print(global_config.keys())
df[global_config['offsite_col']] = df[global_config['offsite_col']] - \ # df[global_config['offsite_col']] = df[global_config['offsite_col']] - \
global_config['offsite'] # global_config['offsite']
# 预测列为avg_cols的均值 # # 预测列为avg_cols的均值
df[global_config['y']] = df[global_config['avg_cols']].mean(axis=1) # df[global_config['y']] = df[global_config['avg_cols']].mean(axis=1)
# 去掉多余的列avg_cols # # 去掉多余的列avg_cols
df = df.drop(columns=global_config['avg_cols']) # df = df.drop(columns=global_config['avg_cols'])
# 重命名预测列 # 重命名预测列
df.rename(columns={global_config['y']: 'y'}, inplace=True) df.rename(columns={global_config['y']: 'y'}, inplace=True)
@ -2334,7 +2334,6 @@ def get_market_data(end_time, df):
items_res = requests.post(url=config.query_data_list_item_nos_url, headers=headers, items_res = requests.post(url=config.query_data_list_item_nos_url, headers=headers,
json=config.query_data_list_item_nos_data, timeout=(3, 35)) json=config.query_data_list_item_nos_data, timeout=(3, 35))
json_data = json.loads(items_res.text) json_data = json.loads(items_res.text)
config.logger.info(f"获取到的数据:{json_data}")
df3 = pd.DataFrame(json_data['data']) df3 = pd.DataFrame(json_data['data'])
# 按照dataItemNo 分组 得到多个dataframe 最后根据dataDate merge 成一个dataframe # 按照dataItemNo 分组 得到多个dataframe 最后根据dataDate merge 成一个dataframe
df2 = pd.DataFrame() df2 = pd.DataFrame()
@ -2350,7 +2349,9 @@ def get_market_data(end_time, df):
# 20240101 转换为 2024-01-01 # 20240101 转换为 2024-01-01
df2['date'] = pd.to_datetime(df2['date'], format='%Y%m%d') df2['date'] = pd.to_datetime(df2['date'], format='%Y%m%d')
df2['date'] = df2['date'].dt.strftime('%Y-%m-%d') df2['date'] = df2['date'].dt.strftime('%Y-%m-%d')
config.logger.info(f'市场信息指标拼接前:{df.shape}')
df = pd.merge(df, df2, how='left', on='date') df = pd.merge(df, df2, how='left', on='date')
config.logger.info(f'市场信息指标拼接后:{df.shape}')
return df return df

View File

@ -13,9 +13,9 @@ global_config.update({
'logger': logger, 'logger': logger,
'dataset': dataset, 'dataset': dataset,
'y': y, 'y': y,
'offsite_col': offsite_col, # 'offsite_col': offsite_col,
'avg_cols': avg_cols, # 'avg_cols': avg_cols,
'offsite': offsite, # 'offsite': offsite,
'edbcodenamedict': edbcodenamedict, 'edbcodenamedict': edbcodenamedict,
'is_debug': is_debug, 'is_debug': is_debug,
'is_train': is_train, 'is_train': is_train,
@ -303,7 +303,7 @@ def predict_main():
try: try:
# 如果是测试环境最高价最低价取excel文档 # 如果是测试环境最高价最低价取excel文档
if server_host == '192.168.100.53': if server_host == '192.168.100.53':
logger.info('从excel文档获取最高价最低价') logger.info('从excel文档获取市场信息平台指标')
df_zhibiaoshuju = get_high_low_data(df_zhibiaoshuju) df_zhibiaoshuju = get_high_low_data(df_zhibiaoshuju)
else: else:
logger.info('从市场信息平台获取数据') logger.info('从市场信息平台获取数据')
@ -311,7 +311,7 @@ def predict_main():
end_time, df_zhibiaoshuju) end_time, df_zhibiaoshuju)
except: except:
logger.info('最高最低价拼接失败') logger.info('市场信息平台数据项-eta数据项 拼接失败')
# 保存到xlsx文件的sheet表 # 保存到xlsx文件的sheet表
with pd.ExcelWriter(os.path.join(dataset, data_set)) as file: with pd.ExcelWriter(os.path.join(dataset, data_set)) as file:
@ -556,8 +556,7 @@ if __name__ == '__main__':
# logger.info(f'预测失败:{e}') # logger.info(f'预测失败:{e}')
# continue # continue
# predict_main() predict_main()
# push_market_value() # push_market_value()
# sql_inset_predict(global_config)
sql_inset_predict(global_config)