diff --git a/main.py b/main.py index c51a009..d06d24b 100644 --- a/main.py +++ b/main.py @@ -138,15 +138,23 @@ def predict_main(): is_eta=is_eta, ) + + logger.info('模型训练完成') # # 模型评估 + + logger.info('训练数据绘图ing') model_results3 = model_losss_juxiting(sqlitedb) + + logger.info('训练数据绘图end') # 模型报告 + logger.info('制作报告ing') title = f'{settings}--{now}-预测报告' # 报告标题 brent_export_pdf(dataset=dataset,num_models = 5 if is_fivemodels else 22,time=end_time, reportname=reportname,sqlitedb=sqlitedb), # pp_export_pdf(dataset=dataset,num_models = 5 if is_fivemodels else 22,time=end_time, # reportname=reportname), + logger.info('制作报告end') logger.info('模型训练完成') # tansuanli_export_pdf(dataset=dataset,num_models = 5 if is_fivemodels else 22,end_time=end_time,reportname=reportname) diff --git a/models/nerulforcastmodels.py b/models/nerulforcastmodels.py index 7ec6e36..74dc7d6 100644 --- a/models/nerulforcastmodels.py +++ b/models/nerulforcastmodels.py @@ -510,36 +510,14 @@ def model_losss_juxiting(sqlitedb): # 使用最佳五个模型进行绘图 - # best_models = pd.read_csv(os.path.join(dataset,'best_modelnames.txt'),header=None).values.flatten().tolist() - # def find_min_max_within_quantile(row): - # row = row[best_models] - # q10 = row.min() - # q90 = row.max() - # # 获取 row行10%分位值对应的模型名称 - # min_model = row[row == q10].idxmin() - # max_model = row[row == q90].idxmin() - - # # # 判断flot值是否为空值 - # # if pd.isna(q10) or pd.isna(q90): - # return pd.Series([q10, q90,min_model,max_model], index=['min_within_quantile','max_within_quantile','min_model','max_model']) - - # # 遍历行 - # df_combined3[['min_within_quantile', 'max_within_quantile','min_model','max_model']] = df_combined3.apply(find_min_max_within_quantile, axis=1) - # df_combined = df_combined.round(4) - # print(df_combined3) - - - - - # 通道使用预测模型的80%置信度 + best_models = pd.read_csv(os.path.join(dataset,'best_modelnames.txt'),header=None).values.flatten().tolist() def find_min_max_within_quantile(row): - row.drop(['ds','y'], inplace=True) - # 获取分位数10%和90%的值 - q10 = row.quantile(0.1) - q90 = row.quantile(0.9) + row = row[best_models] + q10 = row.min() + q90 = row.max() # 获取 row行10%分位值对应的模型名称 - min_model = row[row == q10].index[0] - max_model = row[row == q90].index[0] + min_model = row[row == q10].idxmin() + max_model = row[row == q90].idxmin() # # 判断flot值是否为空值 # if pd.isna(q10) or pd.isna(q90): @@ -549,6 +527,28 @@ def model_losss_juxiting(sqlitedb): df_combined3[['min_within_quantile', 'max_within_quantile','min_model','max_model']] = df_combined3.apply(find_min_max_within_quantile, axis=1) df_combined = df_combined.round(4) print(df_combined3) + + + + + # # 通道使用预测模型的80%置信度 + # def find_min_max_within_quantile(row): + # row.drop(['ds','y'], inplace=True) + # # 获取分位数10%和90%的值 + # q10 = row.quantile(0.1) + # q90 = row.quantile(0.9) + # # 获取 row行10%分位值对应的模型名称 + # min_model = row[row == q10].index[0] + # max_model = row[row == q90].index[0] + + # # # 判断flot值是否为空值 + # # if pd.isna(q10) or pd.isna(q90): + # return pd.Series([q10, q90,min_model,max_model], index=['min_within_quantile','max_within_quantile','min_model','max_model']) + + # # 遍历行 + # df_combined3[['min_within_quantile', 'max_within_quantile','min_model','max_model']] = df_combined3.apply(find_min_max_within_quantile, axis=1) + # df_combined = df_combined.round(4) + # print(df_combined3)