diff --git a/config_jingbo_zhoudu.py b/config_jingbo_zhoudu.py index 189bf30..2cd60d1 100644 --- a/config_jingbo_zhoudu.py +++ b/config_jingbo_zhoudu.py @@ -216,7 +216,7 @@ data_set = '原油指标数据.xlsx' # 数据集文件 dataset = 'yuanyouzhoududataset' # 数据集文件夹 # 数据库名称 -db_name = os.path.join(dataset,'jbsh_yuanyou.db') +db_name = os.path.join(dataset,'jbsh_yuanyou_zhoudu.db') sqlitedb = SQLiteHandler(db_name) sqlitedb.connect() diff --git a/main_yuanyou_zhoudu.py b/main_yuanyou_zhoudu.py index 7cf59ea..98dce8a 100644 --- a/main_yuanyou_zhoudu.py +++ b/main_yuanyou_zhoudu.py @@ -254,16 +254,16 @@ 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('模型训练完成') # # LSTM 单变量模型 # ex_Lstm(df,input_seq_len=input_size,output_seq_len=horizon,is_debug=is_debug,dataset=dataset) @@ -288,11 +288,11 @@ def predict_main(): if __name__ == '__main__': - # global end_time - # is_on = True - # # 遍历2024-11-25 到 2024-12-3 之间的工作日日期 - # for i_time in pd.date_range('2025-1-20', '2025-2-6', freq='B'): - # end_time = i_time.strftime('%Y-%m-%d') - # predict_main() + global end_time + is_on = True + # 遍历2024-11-25 到 2024-12-3 之间的工作日日期 + for i_time in pd.date_range('2024-10-8', '2025-2-12', freq='B'): + end_time = i_time.strftime('%Y-%m-%d') + predict_main() - predict_main() \ No newline at end of file + # predict_main() \ No newline at end of file diff --git a/models/nerulforcastmodels.py b/models/nerulforcastmodels.py index 1336783..8714f30 100644 --- a/models/nerulforcastmodels.py +++ b/models/nerulforcastmodels.py @@ -188,9 +188,9 @@ def ex_Model(df,horizon,input_size,train_steps,val_check_steps,early_stop_patien logger.info('读取模型:'+ filename) nf = load(filename) # # 测试集预测 - nf_test_preds = nf.cross_validation(df=df_test, val_size=val_size, test_size=test_size, n_windows=None) - # 测试集预测结果保存 - nf_test_preds.to_csv(os.path.join(dataset,"cross_validation.csv"),index=False) + # nf_test_preds = nf.cross_validation(df=df_test, val_size=val_size, test_size=test_size, n_windows=None) + # # 测试集预测结果保存 + # nf_test_preds.to_csv(os.path.join(dataset,"cross_validation.csv"),index=False) df_test['ds'] = pd.to_datetime(df_test['ds'], errors='coerce') @@ -257,7 +257,7 @@ def model_losss_yongan(sqlitedb,end_time,table_name_prefix): # 然后筛选出那些 cutoff 等于 max_cutoff 的行,这样就得到了每个分组中 cutoff 最大的行,并保留了其他列 df_combined = df_combined[df_combined['CREAT_DATE'] == df_combined['max_cutoff']] # 删除模型生成的cutoff列 - df_combined.drop(columns=['CREAT_DATE', 'max_cutoff','created_dt','min_within_quantile','max_within_quantile','id','min_price','max_price','LOW_PRICE','HIGH_PRICE','mean'], inplace=True) + df_combined.drop(columns=['CREAT_DATE', 'max_cutoff','created_dt','min_within_quantile','max_within_quantile','id','min_price','max_price','LOW_PRICE','HIGH_PRICE','mean']) # 获取模型名称 modelnames = df_combined.columns.to_list()[1:] if 'y' in modelnames: @@ -657,14 +657,14 @@ def model_losss(sqlitedb,end_time): df_combined.dropna(inplace=True) logger.info(df_combined.shape) # 其他列转为数值类型 - df_combined = df_combined.astype({col: 'float32' for col in df_combined.columns if col not in ['CREAT_DATE','ds','created_dt'] }) + df_combined = df_combined.astype({col: 'float32' for col in df_combined.columns if col not in ['CREAT_DATE','ds','created_dt','cutoff'] }) # 使用 groupby 和 transform 结合 lambda 函数来获取每个分组中 cutoff 的最小值,并创建一个新的列来存储这个最大值 df_combined['max_cutoff'] = df_combined.groupby('ds')['CREAT_DATE'].transform('max') # 然后筛选出那些 cutoff 等于 max_cutoff 的行,这样就得到了每个分组中 cutoff 最大的行,并保留了其他列 df_combined = df_combined[df_combined['CREAT_DATE'] == df_combined['max_cutoff']] # 删除模型生成的cutoff列 - df_combined.drop(columns=['CREAT_DATE', 'max_cutoff','created_dt','min_within_quantile','max_within_quantile','id','min_price','max_price','LOW_PRICE','HIGH_PRICE','mean'], inplace=True) + df_combined.drop(columns=['CREAT_DATE', 'max_cutoff','created_dt','min_within_quantile','max_within_quantile','id','min_price','max_price','LOW_PRICE','HIGH_PRICE','mean'], inplace=True,errors='ignore') # 获取模型名称 modelnames = df_combined.columns.to_list()[1:] if 'y' in modelnames: