聚烯烃每周最佳模型逻辑调整
This commit is contained in:
		
							parent
							
								
									8074647329
								
							
						
					
					
						commit
						5a8e3ae007
					
				| @ -39,35 +39,35 @@ edbnamelist = [ | |||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # eta自有数据指标编码 | # eta自有数据指标编码 次月 | ||||||
| modelsindex = { | modelsindex = { | ||||||
|     'NHITS': 'SELF0000001', |     'NHITS': 'SELF0000143', | ||||||
|     'Informer': 'SELF0000057', |     'Informer': 'SELF0000144', | ||||||
|     'LSTM': 'SELF0000058', |     'LSTM': 'SELF0000145', | ||||||
|     'iTransformer': 'SELF0000059', |     'iTransformer': 'SELF0000146', | ||||||
|     'TSMixer': 'SELF0000060', |     'TSMixer': 'SELF0000147', | ||||||
|     'TSMixerx': 'SELF0000061', |     'TSMixerx': 'SELF0000148', | ||||||
|     'PatchTST': 'SELF0000062', |     'PatchTST': 'SELF0000149', | ||||||
|     'RNN': 'SELF0000063', |     'RNN': 'SELF0000150', | ||||||
|     'GRU': 'SELF0000064', |     'GRU': 'SELF0000151', | ||||||
|     'TCN': 'SELF0000065', |     'TCN': 'SELF0000152', | ||||||
|     'BiTCN': 'SELF0000066', |     'BiTCN': 'SELF0000153', | ||||||
|     'DilatedRNN': 'SELF0000067', |     'DilatedRNN': 'SELF0000154', | ||||||
|     'MLP': 'SELF0000068', |     'MLP': 'SELF0000155', | ||||||
|     'DLinear': 'SELF0000069', |     'DLinear': 'SELF0000156', | ||||||
|     'NLinear': 'SELF0000070', |     'NLinear': 'SELF0000157', | ||||||
|     'TFT': 'SELF0000071', |     'TFT': 'SELF0000158', | ||||||
|     'FEDformer': 'SELF0000072', |     'FEDformer': 'SELF0000159', | ||||||
|     'StemGNN': 'SELF0000073', |     'StemGNN': 'SELF0000160', | ||||||
|     'MLPMultivariate': 'SELF0000074', |     'MLPMultivariate': 'SELF0000161', | ||||||
|     'TiDE': 'SELF0000075', |     'TiDE': 'SELF0000162', | ||||||
|     'DeepNPTS': 'SELF0000076' |     'DeepNPTS': 'SELF0000163', | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # eta 上传预测结果的请求体,后面发起请求的时候更改 model datalist  数据 | # eta 上传预测结果的请求体,后面发起请求的时候更改 model datalist  数据 | ||||||
| data = { | data = { | ||||||
|     "IndexCode": "", |     "IndexCode": "", | ||||||
|     "IndexName": "价格预测模型", |     "IndexName": "价格预测xx模型-次月", | ||||||
|     "Unit": "无", |     "Unit": "无", | ||||||
|             "Frequency": "日度", |             "Frequency": "日度", | ||||||
|             "SourceName": f"价格预测", |             "SourceName": f"价格预测", | ||||||
| @ -305,7 +305,7 @@ is_timefurture = True  # 是否使用时间特征 | |||||||
| is_fivemodels = False  # 是否使用之前保存的最佳的5个模型 | is_fivemodels = False  # 是否使用之前保存的最佳的5个模型 | ||||||
| is_edbcode = False  # 特征使用edbcoding列表中的 | is_edbcode = False  # 特征使用edbcoding列表中的 | ||||||
| is_edbnamelist = False  # 自定义特征,对应上面的edbnamelist | is_edbnamelist = False  # 自定义特征,对应上面的edbnamelist | ||||||
| is_update_eta = False  # 预测结果上传到eta | is_update_eta = True  # 预测结果上传到eta | ||||||
| is_update_report = True  # 是否上传报告 | is_update_report = True  # 是否上传报告 | ||||||
| is_update_warning_data = False  # 是否上传预警数据 | is_update_warning_data = False  # 是否上传预警数据 | ||||||
| is_update_predict_value = True  # 是否上传预测值到市场信息平台 | is_update_predict_value = True  # 是否上传预测值到市场信息平台 | ||||||
|  | |||||||
| @ -39,29 +39,29 @@ edbnamelist = [ | |||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # eta自有数据指标编码 | # eta自有数据指标编码 次周 | ||||||
| modelsindex = { | modelsindex = { | ||||||
|     'NHITS': 'SELF0000001', |     'NHITS': 'SELF0000099', | ||||||
|     'Informer': 'SELF0000057', |     'Informer': 'SELF0000100', | ||||||
|     'LSTM': 'SELF0000058', |     'LSTM': 'SELF0000101', | ||||||
|     'iTransformer': 'SELF0000059', |     'iTransformer': 'SELF0000102', | ||||||
|     'TSMixer': 'SELF0000060', |     'TSMixer': 'SELF0000103', | ||||||
|     'TSMixerx': 'SELF0000061', |     'TSMixerx': 'SELF0000104', | ||||||
|     'PatchTST': 'SELF0000062', |     'PatchTST': 'SELF0000105', | ||||||
|     'RNN': 'SELF0000063', |     'RNN': 'SELF0000106', | ||||||
|     'GRU': 'SELF0000064', |     'GRU': 'SELF0000107', | ||||||
|     'TCN': 'SELF0000065', |     'TCN': 'SELF0000108', | ||||||
|     'BiTCN': 'SELF0000066', |     'BiTCN': 'SELF0000109', | ||||||
|     'DilatedRNN': 'SELF0000067', |     'DilatedRNN': 'SELF0000110', | ||||||
|     'MLP': 'SELF0000068', |     'MLP': 'SELF0000111', | ||||||
|     'DLinear': 'SELF0000069', |     'DLinear': 'SELF0000112', | ||||||
|     'NLinear': 'SELF0000070', |     'NLinear': 'SELF0000113', | ||||||
|     'TFT': 'SELF0000071', |     'TFT': 'SELF0000114', | ||||||
|     'FEDformer': 'SELF0000072', |     'FEDformer': 'SELF0000115', | ||||||
|     'StemGNN': 'SELF0000073', |     'StemGNN': 'SELF0000116', | ||||||
|     'MLPMultivariate': 'SELF0000074', |     'MLPMultivariate': 'SELF0000117', | ||||||
|     'TiDE': 'SELF0000075', |     'TiDE': 'SELF0000118', | ||||||
|     'DeepNPTS': 'SELF0000076' |     'DeepNPTS': 'SELF0000119', | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # eta 上传预测结果的请求体,后面发起请求的时候更改 model datalist  数据 | # eta 上传预测结果的请求体,后面发起请求的时候更改 model datalist  数据 | ||||||
|  | |||||||
| @ -219,7 +219,6 @@ push_data_value_list_data = { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| # 八大维度数据项编码 | # 八大维度数据项编码 | ||||||
| bdwd_items = { | bdwd_items = { | ||||||
|     'ciri': 'jxtppbdwdcr', |     'ciri': 'jxtppbdwdcr', | ||||||
| @ -243,7 +242,7 @@ table_name = 'v_tbl_crude_oil_warning' | |||||||
| # 开关 | # 开关 | ||||||
| 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 = False  # 是否通过市场信息平台获取特征 ,在is_eta 为true 的情况下生效 | ||||||
| is_timefurture = True  # 是否使用时间特征 | is_timefurture = True  # 是否使用时间特征 | ||||||
| is_fivemodels = False  # 是否使用之前保存的最佳的5个模型 | is_fivemodels = False  # 是否使用之前保存的最佳的5个模型 | ||||||
|  | |||||||
| @ -302,12 +302,13 @@ def predict_main(): | |||||||
|         # 计算最近60天预测残差最低的模型名称 |         # 计算最近60天预测残差最低的模型名称 | ||||||
|         model_results = sqlitedb.select_data( |         model_results = sqlitedb.select_data( | ||||||
|             'trueandpredict', order_by="ds DESC", limit="60") |             'trueandpredict', order_by="ds DESC", limit="60") | ||||||
|  | 
 | ||||||
|  |         # 删除created_dt,y列空行 | ||||||
|  |         model_results = model_results.dropna( | ||||||
|  |             subset=['created_dt', 'y']) | ||||||
|         # 删除空值率为90%以上的列 |         # 删除空值率为90%以上的列 | ||||||
|         if len(model_results) > 10: |  | ||||||
|         model_results = model_results.dropna( |         model_results = model_results.dropna( | ||||||
|             thresh=len(model_results)*0.1, axis=1) |             thresh=len(model_results)*0.1, axis=1) | ||||||
|         # 删除空行 |  | ||||||
|         model_results = model_results.dropna() |  | ||||||
|         modelnames = model_results.columns.to_list()[2:-1] |         modelnames = model_results.columns.to_list()[2:-1] | ||||||
|         for col in model_results[modelnames].select_dtypes(include=['object']).columns: |         for col in model_results[modelnames].select_dtypes(include=['object']).columns: | ||||||
|             model_results[col] = model_results[col].astype(np.float32) |             model_results[col] = model_results[col].astype(np.float32) | ||||||
|  | |||||||
| @ -250,7 +250,8 @@ def ex_Model(df, horizon, input_size, train_steps, val_check_steps, early_stop_p | |||||||
|                 list.append({'Date': date, 'Value': value}) |                 list.append({'Date': date, 'Value': value}) | ||||||
|             data['DataList'] = list |             data['DataList'] = list | ||||||
|             data['IndexCode'] = modelsindex[m] |             data['IndexCode'] = modelsindex[m] | ||||||
|             data['IndexName'] = f'价格预测{m}模型' |             # data['IndexName'] = f'价格预测{m}模型' | ||||||
|  |             data['IndexName'] = data['IndexName'].replece('xx', m) | ||||||
|             data['Remark'] = m |             data['Remark'] = m | ||||||
|             etadata.push_data(data) |             etadata.push_data(data) | ||||||
| 
 | 
 | ||||||
| @ -1248,7 +1249,6 @@ def model_losss(sqlitedb, end_time): | |||||||
|     except Exception as e: |     except Exception as e: | ||||||
|         config.logger.info(f'准确率计算错误{e}') |         config.logger.info(f'准确率计算错误{e}') | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
|     def _add_abs_error_rate(): |     def _add_abs_error_rate(): | ||||||
|         # 计算每个预测值与真实值之间的偏差率 |         # 计算每个预测值与真实值之间的偏差率 | ||||||
|         for model in allmodelnames: |         for model in allmodelnames: | ||||||
| @ -1822,7 +1822,8 @@ def model_losss_juxitingbak(sqlitedb, end_time): | |||||||
|             plt.text(i, j, str(j), ha='center', va='bottom') |             plt.text(i, j, str(j), ha='center', va='bottom') | ||||||
| 
 | 
 | ||||||
|         # 当前日期画竖虚线 |         # 当前日期画竖虚线 | ||||||
|         plt.axvline(x=df['ds'].iloc[-config.horizon], color='r', linestyle='--') |         plt.axvline(x=df['ds'].iloc[-config.horizon], | ||||||
|  |                     color='r', linestyle='--') | ||||||
|         plt.legend() |         plt.legend() | ||||||
|         plt.xlabel('日期') |         plt.xlabel('日期') | ||||||
|         # 自动设置横轴日期显示 |         # 自动设置横轴日期显示 | ||||||
| @ -2356,7 +2357,8 @@ def brent_export_pdf(num_indicators=475, num_models=21, num_dayindicator=202, in | |||||||
|     content.append(Graphs.draw_little_title('模型选择:')) |     content.append(Graphs.draw_little_title('模型选择:')) | ||||||
|     content.append(Graphs.draw_text( |     content.append(Graphs.draw_text( | ||||||
|         f'本次预测使用了一个专门收集时间序列的NeuralForecast库中的{num_models}个模型:')) |         f'本次预测使用了一个专门收集时间序列的NeuralForecast库中的{num_models}个模型:')) | ||||||
|     content.append(Graphs.draw_text(f'使用{config.input_size}个数据预测未来{inputsize}个数据。')) |     content.append(Graphs.draw_text( | ||||||
|  |         f'使用{config.input_size}个数据预测未来{inputsize}个数据。')) | ||||||
|     content.append(Graphs.draw_little_title('指标情况:')) |     content.append(Graphs.draw_little_title('指标情况:')) | ||||||
|     with open(os.path.join(config.dataset, '特征频度统计.txt'), encoding='utf-8') as f: |     with open(os.path.join(config.dataset, '特征频度统计.txt'), encoding='utf-8') as f: | ||||||
|         for line in f.readlines(): |         for line in f.readlines(): | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user