原油预警内容上传到市场信息平台
This commit is contained in:
		
							parent
							
								
									035b74a617
								
							
						
					
					
						commit
						32da540a40
					
				| @ -89,8 +89,7 @@ data = { | ||||
| ClassifyId = 1214 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ################################################################################################################  变量定义--线上环境 | ||||
| # 变量定义--线上环境 | ||||
| # server_host = '10.200.32.39' | ||||
| # login_pushreport_url = "http://10.200.32.39/jingbo-api/api/server/login" | ||||
| # upload_url = "http://10.200.32.39/jingbo-api/api/analysis/reportInfo/researchUploadReportSave" | ||||
| @ -111,7 +110,6 @@ ClassifyId = 1214 | ||||
| # } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| # upload_data = { | ||||
| #     "funcModule":'研究报告信息', | ||||
| #     "funcOperation":'上传原油价格预测报告', | ||||
| @ -119,12 +117,12 @@ ClassifyId = 1214 | ||||
| #         "groupNo":'', # 用户组id | ||||
| #         "ownerAccount":'27663', #报告所属用户账号  27663 - 刘小朋 | ||||
| #         "reportType":'OIL_PRICE_FORECAST', # 报告类型,固定为OIL_PRICE_FORECAST | ||||
| #         "fileName": '', #文件名称  | ||||
| #         "fileName": '', #文件名称 | ||||
| #         "fileBase64": '' ,#文件内容base64 | ||||
| #         "categoryNo":'yyjgycbg', # 研究报告分类编码 | ||||
| #         "smartBusinessClassCode":'YCJGYCBG', #分析报告分类编码 | ||||
| #         "reportEmployeeCode":"E40482" ,# 报告人  E40482  - 管理员  0000027663 - 刘小朋   | ||||
| #         "reportDeptCode" :"002000621000", # 报告部门 - 002000621000  SH期货研究部   | ||||
| #         "reportEmployeeCode":"E40482" ,# 报告人  E40482  - 管理员  0000027663 - 刘小朋 | ||||
| #         "reportDeptCode" :"002000621000", # 报告部门 - 002000621000  SH期货研究部 | ||||
| #         "productGroupCode":"RAW_MATERIAL"  # 商品分类 | ||||
| #   } | ||||
| # } | ||||
| @ -151,7 +149,6 @@ ClassifyId = 1214 | ||||
| # } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| # push_data_value_list_data = { | ||||
| #     "funcModule": "数据表信息列表", | ||||
| #     "funcOperation": "新增", | ||||
| @ -189,13 +186,12 @@ ClassifyId = 1214 | ||||
| # # 生产环境数据库 | ||||
| # host = 'rm-2zehj3r1n60ttz9x5.mysql.rds.aliyuncs.com' | ||||
| # port = 3306 | ||||
| # dbusername ='jingbo'   | ||||
| # dbusername ='jingbo' | ||||
| # password = 'shihua@123' | ||||
| # dbname = 'jingbo' | ||||
| # table_name = 'v_tbl_crude_oil_warning' | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| # # 变量定义--测试环境 | ||||
| server_host = '192.168.100.53'  # 内网 | ||||
| # server_host = '183.242.74.28'  # 外网 | ||||
| @ -208,6 +204,8 @@ upload_warning_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/cru | ||||
| query_data_list_item_nos_url = f"http://{server_host}:8080/jingbo-dev/api/warehouse/dwDataItem/queryDataListItemNos" | ||||
| # 上传数据项值 | ||||
| push_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/dw/dataValue/pushDataValueList" | ||||
| # 上传停更数据到市场信息平台 | ||||
| push_waring_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/crudeSaveOrupdate" | ||||
| 
 | ||||
| login_data = { | ||||
|     "data": { | ||||
| @ -281,6 +279,26 @@ push_data_value_list_data = { | ||||
|          } | ||||
|     ] | ||||
| } | ||||
| 
 | ||||
| push_waring_data_value_list_data = { | ||||
|     "data": { | ||||
|         "crudeOilWarningDtoList": [ | ||||
|             { | ||||
|                 "lastUpdateDate": "20240501", | ||||
|                 "updateSuspensionCycle": 1, | ||||
|                 "dataSource": "8", | ||||
|                 "frequency": "1", | ||||
|                 "indicatorName": "美元指数", | ||||
|                 "indicatorId": "myzs001", | ||||
|                 "warningDate": "2024-05-13" | ||||
|             } | ||||
|         ], | ||||
|         "dataSource": "8" | ||||
|     }, | ||||
|     "funcModule": "商品数据同步", | ||||
|     "funcOperation": "同步" | ||||
| } | ||||
| 
 | ||||
| # 八大维度数据项编码 | ||||
| bdwd_items = { | ||||
|     'ciri': 'yyycbdwdcr', | ||||
|  | ||||
| @ -40,15 +40,6 @@ pdfmetrics.registerFont(TTFont('SimSun', 'SimSun.ttf')) | ||||
| plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签 | ||||
| plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号 | ||||
| 
 | ||||
| # from config_jingbo_pro import * | ||||
| # from config_jingbo import * | ||||
| # from config_jingbo_yuedu import * | ||||
| # from config_yongan import * | ||||
| # from config_juxiting import * | ||||
| # from config_juxiting_zhoudu import * | ||||
| # from config_juxiting_pro import * | ||||
| 
 | ||||
| # from config_jingbo import logger | ||||
| 
 | ||||
| global_config = { | ||||
|     # 核心配置项 | ||||
| @ -93,6 +84,9 @@ global_config = { | ||||
|     # 上传数据项数据 | ||||
|     'push_data_value_list_url': None, | ||||
|     'push_data_value_list_data': None, | ||||
|     # 上传停更预警数据 | ||||
|     'push_waring_data_value_list_url': None, | ||||
|     'push_waring_data_value_list_data': None, | ||||
| 
 | ||||
|     # 字段映射 | ||||
|     'offsite_col': None,               # 站点字段 | ||||
| @ -1222,6 +1216,14 @@ class Config: | ||||
|     def push_data_value_list_data( | ||||
|         self): return global_config['push_data_value_list_data'] | ||||
| 
 | ||||
|     @property | ||||
|     def push_waring_data_value_list_url( | ||||
|         self): return global_config['push_waring_data_value_list_url'] | ||||
| 
 | ||||
|     @property | ||||
|     def push_waring_data_value_list_data( | ||||
|         self): return global_config['push_waring_data_value_list_data'] | ||||
| 
 | ||||
|     @property | ||||
|     def bdwd_items(self): return global_config['bdwd_items'] | ||||
| 
 | ||||
| @ -2203,6 +2205,43 @@ def push_market_data(data): | ||||
|     return json_data | ||||
| 
 | ||||
| 
 | ||||
| def push_waring_market_data(data): | ||||
|     ''' | ||||
|     上传停更预警数据到市场信息平台 | ||||
|     data: 预测价格数据,示例: | ||||
|     { | ||||
|     "data": { | ||||
|         "crudeOilWarningDtoList": [ | ||||
|             { | ||||
|                 "lastUpdateDate": "20240510", | ||||
|                 "updateSuspensionCycle": 1, | ||||
|                 "dataSource": "8", | ||||
|                 "frequency": "1", | ||||
|                 "indicatorName": "美元指数", | ||||
|                 "indicatorId": "myzs001", | ||||
|                 "warningDate": "2024-05-12" | ||||
|             } | ||||
|         ], | ||||
|         "dataSource": "8" | ||||
|     }, | ||||
|     "funcModule": "商品数据同步", | ||||
|     "funcOperation": "同步" | ||||
| } | ||||
|     ''' | ||||
|     # 获取token | ||||
|     token = get_head_auth_report() | ||||
|     # 定义请求参数 | ||||
|     global_config['push_waring_data_value_list_data']['data']["crudeOilWarningDtoList"] = data | ||||
|     # 发送请求 | ||||
|     headers = {"Authorization": token} | ||||
|     config.logger.info('上传数据中...') | ||||
|     items_res = requests.post(url=config.push_waring_data_value_list_url, headers=headers, | ||||
|                               json=config.push_waring_data_value_list_data, timeout=(3, 35)) | ||||
|     json_data = json.loads(items_res.text) | ||||
|     config.logger.info(f"上传结果:{json_data}") | ||||
|     return json_data | ||||
| 
 | ||||
| 
 | ||||
| def get_high_low_data(df): | ||||
|     # 读取excel 从第五行开始 | ||||
|     df1 = pd.read_excel(os.path.join(config.dataset, '数据项下载.xls'), header=5, names=[ | ||||
|  | ||||
							
								
								
									
										199
									
								
								main_yuanyou.py
									
									
									
									
									
								
							
							
						
						
									
										199
									
								
								main_yuanyou.py
									
									
									
									
									
								
							| @ -63,6 +63,10 @@ global_config.update({ | ||||
|     'push_data_value_list_url': push_data_value_list_url, | ||||
|     'push_data_value_list_data': push_data_value_list_data, | ||||
| 
 | ||||
|     # 上传数据项 | ||||
|     'push_waring_data_value_list_url': push_waring_data_value_list_url, | ||||
|     'push_waring_data_value_list_data': push_waring_data_value_list_data, | ||||
| 
 | ||||
|     # eta 配置 | ||||
|     'APPID': APPID, | ||||
|     'SECRET': SECRET, | ||||
| @ -83,7 +87,6 @@ global_config.update({ | ||||
| }) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| def push_market_value(): | ||||
|     config.logger.info('发送预测结果到市场信息平台') | ||||
|     # 读取预测数据和模型评估数据 | ||||
| @ -120,13 +123,13 @@ def push_market_value(): | ||||
|     predictdata = [ | ||||
|         { | ||||
|             "dataItemNo": global_config['bdwd_items']['ciri'], | ||||
|             "dataDate": global_config['end_time'].replace('-',''), | ||||
|             "dataDate": global_config['end_time'].replace('-', ''), | ||||
|             "dataStatus": "add", | ||||
|             "dataValue": first_mean | ||||
|         }, | ||||
|         { | ||||
|             "dataItemNo": global_config['bdwd_items']['benzhou'], | ||||
|             "dataDate": global_config['end_time'].replace('-',''), | ||||
|             "dataDate": global_config['end_time'].replace('-', ''), | ||||
|             "dataStatus": "add", | ||||
|             "dataValue": last_mean | ||||
|         } | ||||
| @ -141,8 +144,6 @@ def push_market_value(): | ||||
|         config.logger.error(f"推送数据失败: {e}") | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| def predict_main(): | ||||
|     """ | ||||
|     主预测函数,用于从 ETA 获取数据、处理数据、训练模型并进行预测。 | ||||
| @ -197,7 +198,7 @@ def predict_main(): | ||||
|     # 获取数据 | ||||
|     if is_eta: | ||||
|         logger.info('从eta获取数据...') | ||||
|          | ||||
| 
 | ||||
|         df_zhibiaoshuju, df_zhibiaoliebiao = etadata.get_eta_api_yuanyou_data( | ||||
|             data_set=data_set, dataset=dataset)  # 原始数据,未处理 | ||||
| 
 | ||||
| @ -338,94 +339,122 @@ def predict_main(): | ||||
|         sqlitedb.insert_data('most_model', (datetime.datetime.now().strftime( | ||||
|             '%Y-%m-%d %H:%M:%S'), most_common_model,), columns=('ds', 'most_common_model',)) | ||||
| 
 | ||||
|     try: | ||||
|         if is_weekday: | ||||
|         # if True: | ||||
|             logger.info('今天是周一,发送特征预警') | ||||
|             # 上传预警信息到数据库 | ||||
|             warning_data_df = df_zhibiaoliebiao.copy() | ||||
|             warning_data_df = warning_data_df[warning_data_df['停更周期'] > 3][[ | ||||
|                 '指标名称', '指标id', '频度', '更新周期', '指标来源', '最后更新时间', '停更周期']] | ||||
|             # 重命名列名 | ||||
|             warning_data_df = warning_data_df.rename(columns={'指标名称': 'INDICATOR_NAME', '指标id': 'INDICATOR_ID', '频度': 'FREQUENCY', | ||||
|                                                      '更新周期': 'UPDATE_FREQUENCY', '指标来源': 'DATA_SOURCE', '最后更新时间': 'LAST_UPDATE_DATE', '停更周期': 'UPDATE_SUSPENSION_CYCLE'}) | ||||
|             from sqlalchemy import create_engine | ||||
|             import urllib | ||||
|             global password | ||||
|             if '@' in password: | ||||
|                 password = urllib.parse.quote_plus(password) | ||||
|     # try: | ||||
|     #     # if is_weekday: | ||||
|     #     if True: | ||||
|     #         logger.info('今天是周一,发送特征预警') | ||||
|     #         # 上传预警信息到数据库 | ||||
|     #         warning_data_df = df_zhibiaoliebiao.copy() | ||||
|     #         warning_data_df = warning_data_df[warning_data_df['停更周期'] > 3][[ | ||||
|     #             '指标名称', '指标id', '频度', '更新周期', '指标来源', '最后更新时间', '停更周期']] | ||||
|     #         # 重命名列名 | ||||
|     #         warning_data_df = warning_data_df.rename(columns={'指标名称': 'INDICATOR_NAME', '指标id': 'INDICATOR_ID', '频度': 'FREQUENCY', | ||||
|     #                                                  '更新周期': 'UPDATE_FREQUENCY', '指标来源': 'DATA_SOURCE', '最后更新时间': 'LAST_UPDATE_DATE', '停更周期': 'UPDATE_SUSPENSION_CYCLE'}) | ||||
|     #         from sqlalchemy import create_engine | ||||
|     #         import urllib | ||||
|     #         global password | ||||
|     #         if '@' in password: | ||||
|     #             password = urllib.parse.quote_plus(password) | ||||
| 
 | ||||
|             engine = create_engine( | ||||
|                 f'mysql+pymysql://{dbusername}:{password}@{host}:{port}/{dbname}') | ||||
|             warning_data_df['WARNING_DATE'] = datetime.date.today().strftime( | ||||
|                 "%Y-%m-%d %H:%M:%S") | ||||
|             warning_data_df['TENANT_CODE'] = 'T0004' | ||||
|             # 插入数据之前查询表数据然后新增id列 | ||||
|             existing_data = pd.read_sql(f"SELECT * FROM {table_name}", engine) | ||||
|             if not existing_data.empty: | ||||
|                 max_id = existing_data['ID'].astype(int).max() | ||||
|                 warning_data_df['ID'] = range( | ||||
|                     max_id + 1, max_id + 1 + len(warning_data_df)) | ||||
|             else: | ||||
|                 warning_data_df['ID'] = range(1, 1 + len(warning_data_df)) | ||||
|             warning_data_df.to_sql( | ||||
|                 table_name,  con=engine, if_exists='append', index=False) | ||||
|             if is_update_warning_data: | ||||
|                 upload_warning_info(len(warning_data_df)) | ||||
|     except: | ||||
|         logger.info('上传预警信息到数据库失败') | ||||
|     #         engine = create_engine( | ||||
|     #             f'mysql+pymysql://{dbusername}:{password}@{host}:{port}/{dbname}') | ||||
|     #         warning_data_df['WARNING_DATE'] = datetime.date.today().strftime( | ||||
|     #             "%Y-%m-%d %H:%M:%S") | ||||
|     #         warning_data_df['TENANT_CODE'] = 'T0004' | ||||
|     #         # 插入数据之前查询表数据然后新增id列 | ||||
|     #         existing_data = pd.read_sql(f"SELECT * FROM {table_name}", engine) | ||||
|     #         if not existing_data.empty: | ||||
|     #             max_id = existing_data['ID'].astype(int).max() | ||||
|     #             warning_data_df['ID'] = range( | ||||
|     #                 max_id + 1, max_id + 1 + len(warning_data_df)) | ||||
|     #         else: | ||||
|     #             warning_data_df['ID'] = range(1, 1 + len(warning_data_df)) | ||||
|     #         warning_data_df.to_sql( | ||||
|     #             table_name,  con=engine, if_exists='append', index=False) | ||||
|     #         if is_update_warning_data: | ||||
|     #             upload_warning_info(len(warning_data_df)) | ||||
|     # except: | ||||
|     #     logger.info('上传预警信息到数据库失败') | ||||
| 
 | ||||
|     if is_corr: | ||||
|         df = corr_feature(df=df) | ||||
|     # try: | ||||
|     # if is_weekday: | ||||
|     if True: | ||||
|         logger.info('发送特征预警') | ||||
|         # 获取取消订阅的指标ID | ||||
| 
 | ||||
|     df1 = df.copy()  # 备份一下,后面特征筛选完之后加入ds y 列用 | ||||
|     logger.info(f"开始训练模型...") | ||||
|     row, col = df.shape | ||||
|         # 上传预警信息到数据库 | ||||
|         warning_data_df = df_zhibiaoliebiao.copy() | ||||
|         warning_data_df = warning_data_df[warning_data_df['停更周期'] > 3][[ | ||||
|             '指标名称', '指标id', '频度', '更新周期', '指标来源', '最后更新时间', '停更周期']] | ||||
|         # 重命名列名 | ||||
|         warning_data_df = warning_data_df.rename(columns={'指标名称': 'indicatorName', '指标id': 'indicatorId', '频度': 'frequency', | ||||
|                                                           '更新周期': 'UPDATE_FREQUENCY', '指标来源': 'DATA_SOURCE', '最后更新时间': 'LAST_UPDATE_DATE', '停更周期': 'updateSuspensionCycle'}) | ||||
| 
 | ||||
|     now = datetime.datetime.now().strftime('%Y%m%d%H%M%S') | ||||
|     ex_Model(df, | ||||
|              horizon=global_config['horizon'], | ||||
|              input_size=global_config['input_size'], | ||||
|              train_steps=global_config['train_steps'], | ||||
|              val_check_steps=global_config['val_check_steps'], | ||||
|              early_stop_patience_steps=global_config['early_stop_patience_steps'], | ||||
|              is_debug=global_config['is_debug'], | ||||
|              dataset=global_config['dataset'], | ||||
|              is_train=global_config['is_train'], | ||||
|              is_fivemodels=global_config['is_fivemodels'], | ||||
|              val_size=global_config['val_size'], | ||||
|              test_size=global_config['test_size'], | ||||
|              settings=global_config['settings'], | ||||
|              now=now, | ||||
|              etadata=etadata, | ||||
|              modelsindex=global_config['modelsindex'], | ||||
|              data=data, | ||||
|              is_eta=global_config['is_eta'], | ||||
|              end_time=global_config['end_time'], | ||||
|              ) | ||||
|         warning_data_df['warningDate'] = datetime.date.today().strftime( | ||||
|             "%Y-%m-%d %H:%M:%S") | ||||
|         warning_data_df['dataSource'] = 8 | ||||
|         data = warning_data_df.to_json(orient='records', force_ascii=False) | ||||
|         data = data.replace('日度', '1') | ||||
|         data = data.replace('周度', '2') | ||||
|         data = data.replace('月度', '3') | ||||
|         data = json.loads(data) | ||||
|         push_waring_market_data(data) | ||||
|         # if is_update_warning_data: | ||||
|         #     upload_warning_info(len(warning_data_df)) | ||||
|     # except: | ||||
|     #     logger.info('上传预警信息到数据库失败') | ||||
| 
 | ||||
|     logger.info('模型训练完成') | ||||
|     # if is_corr: | ||||
|     #     df = corr_feature(df=df) | ||||
| 
 | ||||
|     logger.info('训练数据绘图ing') | ||||
|     model_results3 = model_losss(sqlitedb, end_time=end_time) | ||||
|     logger.info('训练数据绘图end') | ||||
|     # df1 = df.copy()  # 备份一下,后面特征筛选完之后加入ds y 列用 | ||||
|     # logger.info(f"开始训练模型...") | ||||
|     # row, col = df.shape | ||||
| 
 | ||||
|     # 模型报告 | ||||
|     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,  | ||||
|                         inputsize = global_config['horizon'], | ||||
|                         sqlitedb=sqlitedb | ||||
|                      ), | ||||
|     # now = datetime.datetime.now().strftime('%Y%m%d%H%M%S') | ||||
|     # ex_Model(df, | ||||
|     #          horizon=global_config['horizon'], | ||||
|     #          input_size=global_config['input_size'], | ||||
|     #          train_steps=global_config['train_steps'], | ||||
|     #          val_check_steps=global_config['val_check_steps'], | ||||
|     #          early_stop_patience_steps=global_config['early_stop_patience_steps'], | ||||
|     #          is_debug=global_config['is_debug'], | ||||
|     #          dataset=global_config['dataset'], | ||||
|     #          is_train=global_config['is_train'], | ||||
|     #          is_fivemodels=global_config['is_fivemodels'], | ||||
|     #          val_size=global_config['val_size'], | ||||
|     #          test_size=global_config['test_size'], | ||||
|     #          settings=global_config['settings'], | ||||
|     #          now=now, | ||||
|     #          etadata=etadata, | ||||
|     #          modelsindex=global_config['modelsindex'], | ||||
|     #          data=data, | ||||
|     #          is_eta=global_config['is_eta'], | ||||
|     #          end_time=global_config['end_time'], | ||||
|     #          ) | ||||
| 
 | ||||
|     logger.info('制作报告end') | ||||
|     logger.info('模型训练完成') | ||||
|     # logger.info('模型训练完成') | ||||
| 
 | ||||
|     push_market_value() | ||||
|     # logger.info('训练数据绘图ing') | ||||
|     # 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, | ||||
|     #                  inputsize=global_config['horizon'], | ||||
|     #                  sqlitedb=sqlitedb | ||||
|     #                  ), | ||||
| 
 | ||||
|     # logger.info('制作报告end') | ||||
|     # logger.info('模型训练完成') | ||||
| 
 | ||||
|     # push_market_value() | ||||
| 
 | ||||
|     # # LSTM 单变量模型 | ||||
|     # ex_Lstm(df,input_seq_len=input_size,output_seq_len=horizon,is_debug=is_debug,dataset=dataset) | ||||
|  | ||||
| @ -1,40 +0,0 @@ | ||||
| # XGBoost 价格预测分析报告 <span style="color:gray; font-size:0.8em">2025-05-08</span> | ||||
| 
 | ||||
| ## 一、模型实现 | ||||
| 
 | ||||
| ### 1. 特征工程 | ||||
| 
 | ||||
| - 使用 5 期历史滞后特征 | ||||
| - 预测未来 10 个时间步长 | ||||
| - 数据集分割比例:80% 训练集 / 20% 测试集 | ||||
| 
 | ||||
| ### 2. 模型配置 | ||||
| 
 | ||||
| |              | learning_rate | max_depth | n_estimators | | ||||
| | :----------- | ------------: | --------: | -----------: | | ||||
| | 最佳参数组合 |             1 |         4 |          100 | | ||||
| 
 | ||||
| ## 二、性能评估 | ||||
| 
 | ||||
| ### 多步预测误差分析 | ||||
| 
 | ||||
| | 预测步长 | 均方根误差(RMSE) |  R² 分数 | | ||||
| | -------: | ---------------: | -------: | | ||||
| |        1 |          2.30044 | 0.828193 | | ||||
| |        2 |          2.74815 | 0.756595 | | ||||
| |        3 |          3.16346 | 0.679378 | | ||||
| |        4 |          3.62202 |  0.58126 | | ||||
| |        5 |          3.77657 | 0.546517 | | ||||
| 
 | ||||
| ## 三、预测结果 | ||||
| 
 | ||||
| ### 未来 5 日价格预测 | ||||
| 
 | ||||
|  | ||||
| | | 预测值 | | ||||
| |:--------------------|---------:| | ||||
| | 2025-03-14 00:00:00 | 68.8125 | | ||||
| | 2025-03-15 00:00:00 | 68.6643 | | ||||
| | 2025-03-16 00:00:00 | 69.283 | | ||||
| | 2025-03-17 00:00:00 | 71.7288 | | ||||
| | 2025-03-18 00:00:00 | 68.8356 | | ||||
										
											Binary file not shown.
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user