diff --git a/config_juxiting.py b/config_juxiting.py index a15bcae..92a8f38 100644 --- a/config_juxiting.py +++ b/config_juxiting.py @@ -167,7 +167,7 @@ ClassifyId = 1161 # "funcModule": '研究报告信息', # "funcOperation": '上传聚烯烃PP价格预测报告', # "data": { -# "groupNo": '000211' # 用户组编号 +# "groupNo": '000211', # 用户组编号 # "ownerAccount": '36541', # 报告所属用户账号  36541 - 贾青雪 # "reportType": 'OIL_PRICE_FORECAST', # 报告类型,固定为OIL_PRICE_FORECAST # "fileName": '', # 文件名称 @@ -176,7 +176,7 @@ ClassifyId = 1161 # "smartBusinessClassCode": 'JXTJGYCBG', # 分析报告分类编码 # "reportEmployeeCode": "E40482", # 报告人  E40482  - 管理员  0000027663 - 刘小朋   # "reportDeptCode": "JXTJGYCBG", # 报告部门 - 002000621000  SH期货研究部   -# "productGroupCode": "RAW_MATERIAL"   # 商品分类 +# "productGroupCode": "RAW_MATERIAL" # 商品分类 # } # } @@ -196,8 +196,9 @@ ClassifyId = 1161 # "funcOperation": "查询", # "data": { # "dateStart": "20200101", -# "dateEnd": "20241231", -# "dataItemNoList": ["Brentzdj", "Brentzgj"] # 数据项编码,代表 brent最低价和最高价 +# "dateEnd": "", +# # 数据项编码,代表 PP期货 价格 +# "dataItemNoList": ["MAIN_CONFT_SETTLE_PRICE"] # } # } @@ -334,8 +335,9 @@ query_data_list_item_nos_data = { "funcOperation": "查询", "data": { "dateStart": "20200101", - "dateEnd": "20241231", - "dataItemNoList": ["Brentzdj", "Brentzgj"] # 数据项编码,代表 brent最低价和最高价 + "dateEnd": "", + # 数据项编码,代表 PP期货 价格 + "dataItemNoList": ["MAIN_CONFT_SETTLE_PRICE"] } } @@ -424,8 +426,8 @@ DEFAULT_CONFIG = { # 开关 is_train = True # 是否训练 is_debug = False # 是否调试 -is_eta = True # 是否使用eta接口 -is_market = False # 是否通过市场信息平台获取特征 ,在is_eta 为true 的情况下生效 +is_eta = False # 是否使用eta接口 +is_market = True # 是否通过市场信息平台获取特征 ,在is_eta 为true 的情况下生效 is_timefurture = True # 是否使用时间特征 is_fivemodels = False # 是否使用之前保存的最佳的5个模型 is_edbcode = False # 特征使用edbcoding列表中的 @@ -457,15 +459,18 @@ if add_kdj and is_edbnamelist: edbnamelist = edbnamelist+['K', 'D', 'J'] # 模型参数 -y = 'AVG-金能大唐久泰青州' -avg_cols = [ - 'PP:拉丝:1102K:出厂价:青州:国家能源宁煤(日)', - 'PP:拉丝:L5E89:出厂价:华北(第二区域):内蒙古久泰新材料(日)', - 'PP:拉丝:L5E89:出厂价:河北、鲁北:大唐内蒙多伦(日)', - 'PP:拉丝:HP550J:市场价:青岛:金能化学(日)' -] -offsite = 80 -offsite_col = ['PP:拉丝:HP550J:市场价:青岛:金能化学(日)'] +# y = 'AVG-金能大唐久泰青州' +# avg_cols = [ +# 'PP:拉丝:1102K:出厂价:青州:国家能源宁煤(日)', +# 'PP:拉丝:L5E89:出厂价:华北(第二区域):内蒙古久泰新材料(日)', +# 'PP:拉丝:L5E89:出厂价:河北、鲁北:大唐内蒙多伦(日)', +# 'PP:拉丝:HP550J:市场价:青岛:金能化学(日)' +# ] +# offsite = 80 +# offsite_col = ['PP:拉丝:HP550J:市场价:青岛:金能化学(日)'] + +y = 'MAIN_CONFT_SETTLE_PRICE' + horizon = 5 # 预测的步长 input_size = 40 # 输入序列长度 train_steps = 50 if is_debug else 1000 # 训练步数,用来限定epoch次数 diff --git a/lib/dataread.py b/lib/dataread.py index f04195f..c909179 100644 --- a/lib/dataread.py +++ b/lib/dataread.py @@ -993,14 +993,14 @@ def datachuli_juxiting(df_zhibiaoshuju, df_zhibiaoliebiao, datecol='date', end_t # date转为pddate df.rename(columns={datecol: 'ds'}, inplace=True) - # 指定列统一减少数值 - print(global_config.keys()) - df[global_config['offsite_col']] = df[global_config['offsite_col']] - \ - global_config['offsite'] - # 预测列为avg_cols的均值 - df[global_config['y']] = df[global_config['avg_cols']].mean(axis=1) - # 去掉多余的列avg_cols - df = df.drop(columns=global_config['avg_cols']) + # # 指定列统一减少数值 + # print(global_config.keys()) + # df[global_config['offsite_col']] = df[global_config['offsite_col']] - \ + # global_config['offsite'] + # # 预测列为avg_cols的均值 + # df[global_config['y']] = df[global_config['avg_cols']].mean(axis=1) + # # 去掉多余的列avg_cols + # df = df.drop(columns=global_config['avg_cols']) # 重命名预测列 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, json=config.query_data_list_item_nos_data, timeout=(3, 35)) json_data = json.loads(items_res.text) - config.logger.info(f"获取到的数据:{json_data}") df3 = pd.DataFrame(json_data['data']) # 按照dataItemNo 分组 得到多个dataframe ,最后根据dataDate merge 成一个dataframe df2 = pd.DataFrame() @@ -2350,7 +2349,9 @@ def get_market_data(end_time, df): # 20240101 转换为 2024-01-01 df2['date'] = pd.to_datetime(df2['date'], format='%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') + config.logger.info(f'市场信息指标拼接后:{df.shape}') return df diff --git a/main_juxiting.py b/main_juxiting.py index f42f6f3..03887ef 100644 --- a/main_juxiting.py +++ b/main_juxiting.py @@ -13,9 +13,9 @@ global_config.update({ 'logger': logger, 'dataset': dataset, 'y': y, - 'offsite_col': offsite_col, - 'avg_cols': avg_cols, - 'offsite': offsite, + # 'offsite_col': offsite_col, + # 'avg_cols': avg_cols, + # 'offsite': offsite, 'edbcodenamedict': edbcodenamedict, 'is_debug': is_debug, 'is_train': is_train, @@ -303,7 +303,7 @@ def predict_main(): try: # 如果是测试环境,最高价最低价取excel文档 if server_host == '192.168.100.53': - logger.info('从excel文档获取最高价最低价') + logger.info('从excel文档获取市场信息平台指标') df_zhibiaoshuju = get_high_low_data(df_zhibiaoshuju) else: logger.info('从市场信息平台获取数据') @@ -311,7 +311,7 @@ def predict_main(): end_time, df_zhibiaoshuju) except: - logger.info('最高最低价拼接失败') + logger.info('市场信息平台数据项-eta数据项 拼接失败') # 保存到xlsx文件的sheet表 with pd.ExcelWriter(os.path.join(dataset, data_set)) as file: @@ -556,8 +556,7 @@ if __name__ == '__main__': # logger.info(f'预测失败:{e}') # continue - # predict_main() + predict_main() # push_market_value() - - sql_inset_predict(global_config) + # sql_inset_predict(global_config)