更改准确率计算方法
This commit is contained in:
		
							parent
							
								
									09e43f8ac1
								
							
						
					
					
						commit
						dc53680b5f
					
				| @ -463,11 +463,11 @@ def model_losss(sqlitedb,end_time): | ||||
|     # 准确率基准与绘图上下界逻辑一致 | ||||
|     # predict_y[['min_price','max_price']] = predict_y[['min_within_quantile','max_within_quantile']] | ||||
|     # 模型评估前五均值       | ||||
|     predict_y['min_price'] = predict_y[modelnames].mean(axis=1) -1 | ||||
|     predict_y['max_price'] = predict_y[modelnames].mean(axis=1) +1 | ||||
|     # predict_y['min_price'] = predict_y[modelnames].mean(axis=1) -1 | ||||
|     # predict_y['max_price'] = predict_y[modelnames].mean(axis=1) +1 | ||||
|     # 模型评估前十均值       | ||||
|     # predict_y['min_price'] = predict_y[allmodelnames[0:10]].mean(axis=1) -1 | ||||
|     # predict_y['max_price'] = predict_y[allmodelnames[0:10]].mean(axis=1) +1 | ||||
|     predict_y['min_price'] = predict_y[allmodelnames[0:10]].mean(axis=1) -1.5 | ||||
|     predict_y['max_price'] = predict_y[allmodelnames[0:10]].mean(axis=1) +1.5 | ||||
|     # 模型评估前十最大最小 | ||||
|     # allmodelnames 和 predict_y 列 重复的 | ||||
|     # allmodelnames = [col for col in allmodelnames if col in predict_y.columns] | ||||
| @ -523,26 +523,26 @@ def model_losss(sqlitedb,end_time): | ||||
|         endtime = end_time | ||||
|         endtimeweek = datetime.datetime.strptime(endtime, '%Y-%m-%d') | ||||
|         up_week = endtimeweek - datetime.timedelta(days=endtimeweek.weekday() + 14) | ||||
|         up_week_dates = [up_week + datetime.timedelta(days=i) for i in range(14)][4:-2] | ||||
|         up_week_dates = [date.strftime('%Y-%m-%d') for date in up_week_dates] | ||||
|         return up_week_dates | ||||
|     up_week_dates = get_week_date(end_time) | ||||
|         up_week_dates = [up_week + datetime.timedelta(days=i) for i in range(14)] | ||||
|         create_dates = [date.strftime('%Y-%m-%d') for date in up_week_dates[4:-3]] | ||||
|         ds_dates = [date.strftime('%Y-%m-%d') for date in up_week_dates[-7:-2]] | ||||
|         return create_dates,ds_dates | ||||
|      | ||||
|     create_dates,ds_dates = get_week_date(end_time) | ||||
|     # 计算准确率并保存结果 | ||||
|     def _get_accuracy_rate(df,up_week_dates,endtime): | ||||
|     def _get_accuracy_rate(df,create_dates,ds_dates): | ||||
|         df3 = df.copy() | ||||
|         df3 = df3[df3['CREAT_DATE'].isin(up_week_dates)] | ||||
|         df3 = df3[df3['ds'].isin(up_week_dates)] | ||||
|         df3 = df3[df3['CREAT_DATE'].isin(create_dates)] | ||||
|         df3 = df3[df3['ds'].isin(ds_dates)] | ||||
|         accuracy_rote = 0 | ||||
|         for i,group in df3.groupby('ds'): | ||||
|             print('权重:',weight_dict[len(group)-1]) | ||||
|             print('准确率:',(group['ACCURACY'].sum()/len(group))*weight_dict[len(group)-1]) | ||||
|         for i,group in df3.groupby('CREAT_DATE'): | ||||
|             accuracy_rote += (group['ACCURACY'].sum()/len(group))*weight_dict[len(group)-1] | ||||
|         df3.to_csv(os.path.join(dataset,f'accuracy_{endtime}.csv'),index=False) | ||||
|         df4 = pd.DataFrame(columns=['开始日期','结束日期','准确率']) | ||||
|         df4.loc[len(df4)] = {'开始日期':up_week_dates[0],'结束日期':up_week_dates[-1],'准确率':accuracy_rote} | ||||
|         df4.loc[len(df4)] = {'开始日期':ds_dates[0],'结束日期':ds_dates[-1],'准确率':accuracy_rote} | ||||
|         df4.to_sql("accuracy_rote",  con=sqlitedb.connection, if_exists='append', index=False) | ||||
|     _get_accuracy_rate(df,up_week_dates,end_time) | ||||
|         # return df4 | ||||
|      | ||||
|     _get_accuracy_rate(df,create_dates,ds_dates) | ||||
|      | ||||
|     def _add_abs_error_rate(): | ||||
|         # 计算每个预测值与真实值之间的偏差率 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user