diff --git a/aisenzhecode/沥青/定性模型数据项12-11.xlsx b/aisenzhecode/沥青/定性模型数据项12-11.xlsx index 7fd829c..2a13d56 100644 Binary files a/aisenzhecode/沥青/定性模型数据项12-11.xlsx and b/aisenzhecode/沥青/定性模型数据项12-11.xlsx differ diff --git a/aisenzhecode/沥青/沥青定性每日执行.py b/aisenzhecode/沥青/沥青定性每日执行.py index 43ef7f3..cc888bc 100644 --- a/aisenzhecode/沥青/沥青定性每日执行.py +++ b/aisenzhecode/沥青/沥青定性每日执行.py @@ -950,14 +950,14 @@ def main(start_date=None, token=None, token_push=None): date = start_date.strftime('%Y%m%d') print(date) logging.info("当前日期: %s", date) - updateExcelData(date, token) + # updateExcelData(date, token) queryDataListItemNos(token=token) update_e_value('定性模型数据项12-11.xlsx', 8, 1000) x = qualitativeModel() if x is not None: print('**************************************************预测结果:', x) logging.info("预测结果: %s", x) - cur_time, cur_time2 = getNow(date) + # cur_time, cur_time2 = getNow(date) pushData(cur_time, x, token_push) logging.info("主函数执行完成") except Exception as e: diff --git a/config_jingbo.py b/config_jingbo.py index 5f9c4c9..884a971 100644 --- a/config_jingbo.py +++ b/config_jingbo.py @@ -93,163 +93,24 @@ 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" -upload_warning_url = "http://10.200.32.39/jingbo-api/api/basicBuiness/crudeOilWarning/save" -query_data_list_item_nos_url = f"http://{server_host}/jingbo-api/api/warehouse/dwDataItem/queryDataListItemNos" -# 上传数据项值 -push_data_value_list_url = f"http://{server_host}/jingbo-api/api/dw/dataValue/pushDataValueList" -# 上传停更数据到市场信息平台 -push_waring_data_value_list_url = f"http://{server_host}/jingbo-api/api/basicBuiness/crudeOilWarning/crudeSaveOrupdate" -# 获取预警数据中取消订阅指标ID -get_waring_data_value_list_url = f"http://{server_host}/jingbo-api/api/basicBuiness/crudeOilWarning/dataList" - - -login_data = { - "data": { - "account": "api_dev", - "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", - "tenantHashCode": "8a4577dbd919675758d57999a1e891fe", - "terminal": "API" - }, - "funcModule": "API", - "funcOperation": "获取token" -} - - -upload_data = { - "funcModule": '研究报告信息', - "funcOperation": '上传原油价格预测报告', - "data": { - "groupNo": '', # 用户组id - "ownerAccount": '27663', # 报告所属用户账号 27663 - 刘小朋 - "reportType": 'OIL_PRICE_FORECAST', # 报告类型,固定为OIL_PRICE_FORECAST - "fileName": '', # 文件名称 - "fileBase64": '', # 文件内容base64 - "categoryNo": 'yyjgycbg', # 研究报告分类编码 - "smartBusinessClassCode": 'YCJGYCBG', # 分析报告分类编码 - "reportEmployeeCode": "E40482", # 报告人 E40482 - 管理员 0000027663 - 刘小朋 - "reportDeptCode": "002000621000", # 报告部门 - 002000621000 SH期货研究部 - "productGroupCode": "RAW_MATERIAL" # 商品分类 - } -} - -warning_data = { - "groupNo": '', # 用户组id - "funcModule": '原油特征停更预警', - "funcOperation": '原油特征停更预警', - "data": { - 'WARNING_TYPE_NAME': '特征数据停更预警', - 'WARNING_CONTENT': '', - 'WARNING_DATE': '' - } -} - -query_data_list_item_nos_data = { - "funcModule": "数据项", - "funcOperation": "查询", - "data": { - "dateStart": "20200101", - "dateEnd": "20241231", - "dataItemNoList": ["Brentzdj", "Brentzgj"] # 数据项编码,代表 brent最低价和最高价 - } -} - - -push_data_value_list_data = { - "funcModule": "数据表信息列表", - "funcOperation": "新增", - "data": [ - {"dataItemNo": "91230600716676129", - "dataDate": "20230113", - "dataStatus": "add", - "dataValue": 100.11 - }, - {"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY", - "dataDate": "20230113", - "dataStatus": "add", - "dataValue": 100.55 - }, - {"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY", - "dataDate": "20230113", - "dataStatus": "add", - "dataValue": 100.55 - } - ] -} - - -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": "同步" -} - - -get_waring_data_value_list_data = { - "data": "8", "funcModule": "商品数据同步", "funcOperation": "同步"} - - -# 八大维度数据项编码 -bdwd_items = { - 'ciri': '原油大数据预测|FORECAST|PRICE|T', - 'benzhou': '原油大数据预测|FORECAST|PRICE|W', - 'cizhou': '原油大数据预测|FORECAST|PRICE|W_1', - 'gezhou': '原油大数据预测|FORECAST|PRICE|W_2', - 'ciyue': '原油大数据预测|FORECAST|PRICE|M_1', - 'cieryue': '原油大数据预测|FORECAST|PRICE|M_2', - 'cisanyue': '原油大数据预测|FORECAST|PRICE|M_3', - 'cisiyue': '原油大数据预测|FORECAST|PRICE|M_4', -} - - -# 生产环境数据库 -host = 'rm-2zehj3r1n60ttz9x5.mysql.rds.aliyuncs.com' -port = 3306 -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' # 外网 -# login_pushreport_url = f"http://{server_host}:8080/jingbo-dev/api/server/login" -# # 上传报告 -# upload_url = f"http://{server_host}:8080/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave" -# # 停更预警 -# upload_warning_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/save" -# # 查询数据项编码 -# query_data_list_item_nos_url = f"http://{server_host}:8080/jingbo-dev/api/warehouse/dwDataItem/queryDataListItemNos" +# # 变量定义--线上环境 +# 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" +# upload_warning_url = "http://10.200.32.39/jingbo-api/api/basicBuiness/crudeOilWarning/save" +# query_data_list_item_nos_url = f"http://{server_host}/jingbo-api/api/warehouse/dwDataItem/queryDataListItemNos" # # 上传数据项值 -# push_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/dw/dataValue/pushDataValueList" +# push_data_value_list_url = f"http://{server_host}/jingbo-api/api/dw/dataValue/pushDataValueList" # # 上传停更数据到市场信息平台 -# push_waring_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/crudeSaveOrupdate" +# push_waring_data_value_list_url = f"http://{server_host}/jingbo-api/api/basicBuiness/crudeOilWarning/crudeSaveOrupdate" # # 获取预警数据中取消订阅指标ID -# get_waring_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/dataList" +# get_waring_data_value_list_url = f"http://{server_host}/jingbo-api/api/basicBuiness/crudeOilWarning/dataList" # login_data = { # "data": { -# "account": "api_test", -# # "password": "MmVmNzNlOWI0MmY0ZDdjZGUwNzE3ZjFiMDJiZDZjZWU=", # Shihua@123456 -# "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", # 123456 +# "account": "api_dev", +# "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", # "tenantHashCode": "8a4577dbd919675758d57999a1e891fe", # "terminal": "API" # }, @@ -257,25 +118,24 @@ table_name = 'v_tbl_crude_oil_warning' # "funcOperation": "获取token" # } + # upload_data = { -# "groupNo": '', # 用户组id # "funcModule": '研究报告信息', # "funcOperation": '上传原油价格预测报告', # "data": { -# "ownerAccount": 'arui', # 报告所属用户账号 +# "groupNo": '', # 用户组id +# "ownerAccount": '27663', # 报告所属用户账号 27663 - 刘小朋 # "reportType": 'OIL_PRICE_FORECAST', # 报告类型,固定为OIL_PRICE_FORECAST -# "fileName": '2000-40-5-50--100-原油指标数据.xlsx-Brent活跃合约--2024-09-06-15-01-29-预测报告.pdf', # 文件名称 +# "fileName": '', # 文件名称 # "fileBase64": '', # 文件内容base64 # "categoryNo": 'yyjgycbg', # 研究报告分类编码 # "smartBusinessClassCode": 'YCJGYCBG', # 分析报告分类编码 -# "reportEmployeeCode": "E40116", # 报告人 -# "reportDeptCode": "D0044", # 报告部门 +# "reportEmployeeCode": "E40482", # 报告人 E40482 - 管理员 0000027663 - 刘小朋 +# "reportDeptCode": "002000621000", # 报告部门 - 002000621000 SH期货研究部 # "productGroupCode": "RAW_MATERIAL" # 商品分类 # } # } - -# # 已弃用 # warning_data = { # "groupNo": '', # 用户组id # "funcModule": '原油特征停更预警', @@ -297,6 +157,7 @@ table_name = 'v_tbl_crude_oil_warning' # } # } + # push_data_value_list_data = { # "funcModule": "数据表信息列表", # "funcOperation": "新增", @@ -319,6 +180,7 @@ table_name = 'v_tbl_crude_oil_warning' # ] # } + # push_waring_data_value_list_data = { # "data": { # "crudeOilWarningDtoList": [ @@ -342,27 +204,165 @@ table_name = 'v_tbl_crude_oil_warning' # get_waring_data_value_list_data = { # "data": "8", "funcModule": "商品数据同步", "funcOperation": "同步"} + # # 八大维度数据项编码 # bdwd_items = { -# 'ciri': 'yyycbdwdcr', -# 'benzhou': 'yyycbdwdbz', -# 'cizhou': 'yyycbdwdcz', -# 'gezhou': 'yyycbdwdgz', -# 'ciyue': 'yyycbdwdcy', -# 'cieryue': 'yyycbdwdcey', -# 'cisanyue': 'yyycbdwdcsy', -# 'cisiyue': 'yyycbdwdcsiy', +# 'ciri': '原油大数据预测|FORECAST|PRICE|T', +# 'benzhou': '原油大数据预测|FORECAST|PRICE|W', +# 'cizhou': '原油大数据预测|FORECAST|PRICE|W_1', +# 'gezhou': '原油大数据预测|FORECAST|PRICE|W_2', +# 'ciyue': '原油大数据预测|FORECAST|PRICE|M_1', +# 'cieryue': '原油大数据预测|FORECAST|PRICE|M_2', +# 'cisanyue': '原油大数据预测|FORECAST|PRICE|M_3', +# 'cisiyue': '原油大数据预测|FORECAST|PRICE|M_4', # } -# # 北京环境数据库 -# host = '192.168.101.27' +# # 生产环境数据库 +# host = 'rm-2zehj3r1n60ttz9x5.mysql.rds.aliyuncs.com' # port = 3306 -# dbusername = 'root' -# password = '123456' -# dbname = 'jingbo_test' +# 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' # 外网 +login_pushreport_url = f"http://{server_host}:8080/jingbo-dev/api/server/login" +# 上传报告 +upload_url = f"http://{server_host}:8080/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave" +# 停更预警 +upload_warning_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/save" +# 查询数据项编码 +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" +# 获取预警数据中取消订阅指标ID +get_waring_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/dataList" + + +login_data = { + "data": { + "account": "api_test", + # "password": "MmVmNzNlOWI0MmY0ZDdjZGUwNzE3ZjFiMDJiZDZjZWU=", # Shihua@123456 + "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", # 123456 + "tenantHashCode": "8a4577dbd919675758d57999a1e891fe", + "terminal": "API" + }, + "funcModule": "API", + "funcOperation": "获取token" +} + +upload_data = { + "groupNo": '', # 用户组id + "funcModule": '研究报告信息', + "funcOperation": '上传原油价格预测报告', + "data": { + "ownerAccount": 'arui', # 报告所属用户账号 + "reportType": 'OIL_PRICE_FORECAST', # 报告类型,固定为OIL_PRICE_FORECAST + "fileName": '2000-40-5-50--100-原油指标数据.xlsx-Brent活跃合约--2024-09-06-15-01-29-预测报告.pdf', # 文件名称 + "fileBase64": '', # 文件内容base64 + "categoryNo": 'yyjgycbg', # 研究报告分类编码 + "smartBusinessClassCode": 'YCJGYCBG', # 分析报告分类编码 + "reportEmployeeCode": "E40116", # 报告人 + "reportDeptCode": "D0044", # 报告部门 + "productGroupCode": "RAW_MATERIAL" # 商品分类 + } +} + + +# 已弃用 +warning_data = { + "groupNo": '', # 用户组id + "funcModule": '原油特征停更预警', + "funcOperation": '原油特征停更预警', + "data": { + 'WARNING_TYPE_NAME': '特征数据停更预警', + 'WARNING_CONTENT': '', + 'WARNING_DATE': '' + } +} + +query_data_list_item_nos_data = { + "funcModule": "数据项", + "funcOperation": "查询", + "data": { + "dateStart": "20200101", + "dateEnd": "20241231", + "dataItemNoList": ["Brentzdj", "Brentzgj"] # 数据项编码,代表 brent最低价和最高价 + } +} + +push_data_value_list_data = { + "funcModule": "数据表信息列表", + "funcOperation": "新增", + "data": [ + {"dataItemNo": "91230600716676129", + "dataDate": "20230113", + "dataStatus": "add", + "dataValue": 100.11 + }, + {"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY", + "dataDate": "20230113", + "dataStatus": "add", + "dataValue": 100.55 + }, + {"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY", + "dataDate": "20230113", + "dataStatus": "add", + "dataValue": 100.55 + } + ] +} + +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": "同步" +} + + +get_waring_data_value_list_data = { + "data": "8", "funcModule": "商品数据同步", "funcOperation": "同步"} + +# 八大维度数据项编码 +bdwd_items = { + 'ciri': 'yyycbdwdcr', + 'benzhou': 'yyycbdwdbz', + 'cizhou': 'yyycbdwdcz', + 'gezhou': 'yyycbdwdgz', + 'ciyue': 'yyycbdwdcy', + 'cieryue': 'yyycbdwdcey', + 'cisanyue': 'yyycbdwdcsy', + 'cisiyue': 'yyycbdwdcsiy', +} + + +# 北京环境数据库 +host = '192.168.101.27' +port = 3306 +dbusername = 'root' +password = '123456' +dbname = 'jingbo_test' +table_name = 'v_tbl_crude_oil_warning' + DEFAULT_CONFIG = { 'feature_factor_frequency': 'D', 'strategy_id': 1, @@ -380,14 +380,14 @@ DEFAULT_CONFIG = { # 开关 is_train = True # 是否训练 is_debug = False # 是否调试 -is_eta = True # 是否使用eta接口 +is_eta = False # 是否使用eta接口 is_market = True # 是否通过市场信息平台获取特征 ,在is_eta 为true 的情况下生效 is_timefurture = True # 是否使用时间特征 is_fivemodels = False # 是否使用之前保存的最佳的5个模型 is_edbcode = False # 特征使用edbcoding列表中的 is_edbnamelist = False # 自定义特征,对应上面的edbnamelist -is_update_eta = True # 预测结果上传到eta -is_update_report = True # 是否上传报告 +is_update_eta = False # 预测结果上传到eta +is_update_report = False # 是否上传报告 is_update_warning_data = True # 是否上传预警数据 is_update_predict_value = True # 是否上传预测值到市场信息平台 is_del_corr = 0.6 # 是否删除相关性高的特征,取值为 0-1 ,0 为不删除,0.6 表示删除相关性小于0.6的特征 diff --git a/config_jingbo_yuedu.py b/config_jingbo_yuedu.py index d4fb83f..96fb729 100644 --- a/config_jingbo_yuedu.py +++ b/config_jingbo_yuedu.py @@ -172,131 +172,19 @@ 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" -upload_warning_url = "http://10.200.32.39/jingbo-api/api/basicBuiness/crudeOilWarning/save" -query_data_list_item_nos_url = f"http://{server_host}/jingbo-api/api/warehouse/dwDataItem/queryDataListItemNos" -# 上传数据项值 -push_data_value_list_url = f"http://{server_host}/jingbo-api/api/dw/dataValue/pushDataValueList" - -login_data = { - "data": { - "account": "api_dev", - "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", - "tenantHashCode": "8a4577dbd919675758d57999a1e891fe", - "terminal": "API" - }, - "funcModule": "API", - "funcOperation": "获取token" -} - - -upload_data = { - "funcModule": '研究报告信息', - "funcOperation": '上传原油价格预测报告', - "data": { - "groupNo": '', # 用户组id - "ownerAccount": '27663', # 报告所属用户账号 27663 - 刘小朋 - "reportType": 'OIL_PRICE_FORECAST', # 报告类型,固定为OIL_PRICE_FORECAST - "fileName": '', # 文件名称 - "fileBase64": '', # 文件内容base64 - "categoryNo": 'yyjgycbg', # 研究报告分类编码 - "smartBusinessClassCode": 'YCJGYCBG', # 分析报告分类编码 - "reportEmployeeCode": "E40482", # 报告人 E40482 - 管理员 0000027663 - 刘小朋 - "reportDeptCode": "002000621000", # 报告部门 - 002000621000 SH期货研究部 - "productGroupCode": "RAW_MATERIAL" # 商品分类 - } -} - -warning_data = { - "groupNo": '', # 用户组id - "funcModule": '原油特征停更预警', - "funcOperation": '原油特征停更预警', - "data": { - 'WARNING_TYPE_NAME': '特征数据停更预警', - 'WARNING_CONTENT': '', - 'WARNING_DATE': '' - } -} - -query_data_list_item_nos_data = { - "funcModule": "数据项", - "funcOperation": "查询", - "data": { - "dateStart": "20200101", - "dateEnd": "20241231", - "dataItemNoList": ["Brentzdj", "Brentzgj"] # 数据项编码,代表 brent最低价和最高价 - } -} - - -push_data_value_list_data = { - "funcModule": "数据表信息列表", - "funcOperation": "新增", - "data": [ - {"dataItemNo": "91230600716676129", - "dataDate": "20230113", - "dataStatus": "add", - "dataValue": 100.11 - }, - {"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY", - "dataDate": "20230113", - "dataStatus": "add", - "dataValue": 100.55 - }, - {"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY", - "dataDate": "20230113", - "dataStatus": "add", - "dataValue": 100.55 - } - ] -} -# 八大维度数据项编码 -bdwd_items = { - 'ciri': '原油大数据预测|FORECAST|PRICE|T', - 'benzhou': '原油大数据预测|FORECAST|PRICE|W', - 'cizhou': '原油大数据预测|FORECAST|PRICE|W_1', - 'gezhou': '原油大数据预测|FORECAST|PRICE|W_2', - 'ciyue': '原油大数据预测|FORECAST|PRICE|M_1', - 'cieryue': '原油大数据预测|FORECAST|PRICE|M_2', - 'cisanyue': '原油大数据预测|FORECAST|PRICE|M_3', - 'cisiyue': '原油大数据预测|FORECAST|PRICE|M_4', -} - -# 报告中八大维度数据项重命名 -columnsrename = { - '原油大数据预测|FORECAST|PRICE|T': '次日', '原油大数据预测|FORECAST|PRICE|W': '本周', - '原油大数据预测|FORECAST|PRICE|W_1': '次周', '原油大数据预测|FORECAST|PRICE|W_2': '隔周', - '原油大数据预测|FORECAST|PRICE|M_1': '次月', '原油大数据预测|FORECAST|PRICE|M_2': '次二月', - '原油大数据预测|FORECAST|PRICE|M_3': '次三月', '原油大数据预测|FORECAST|PRICE|M_4': '次四月' -} - -# 生产环境数据库 -host = 'rm-2zehj3r1n60ttz9x5.mysql.rds.aliyuncs.com' -port = 3306 -dbusername = 'jingbo' -password = 'shihua@123' -dbname = 'jingbo' -table_name = 'v_tbl_crude_oil_warning' - - -# # 变量定义--测试环境 -# server_host = '192.168.100.53:8080' # 内网 -# # server_host = '183.242.74.28' # 外网 -# login_pushreport_url = f"http://{server_host}/jingbo-dev/api/server/login" -# upload_url = f"http://{server_host}/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave" -# upload_warning_url = f"http://{server_host}/jingbo-dev/api/basicBuiness/crudeOilWarning/save" -# query_data_list_item_nos_url = f"http://{server_host}/jingbo-dev/api/warehouse/dwDataItem/queryDataListItemNos" +# # 变量定义--线上环境 +# 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" +# upload_warning_url = "http://10.200.32.39/jingbo-api/api/basicBuiness/crudeOilWarning/save" +# query_data_list_item_nos_url = f"http://{server_host}/jingbo-api/api/warehouse/dwDataItem/queryDataListItemNos" # # 上传数据项值 -# push_data_value_list_url = f"http://{server_host}/jingbo-dev/api/dw/dataValue/pushDataValueList" +# push_data_value_list_url = f"http://{server_host}/jingbo-api/api/dw/dataValue/pushDataValueList" # login_data = { # "data": { -# "account": "api_test", -# # "password": "MmVmNzNlOWI0MmY0ZDdjZGUwNzE3ZjFiMDJiZDZjZWU=", # Shihua@123456 -# "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", # 123456 +# "account": "api_dev", +# "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", # "tenantHashCode": "8a4577dbd919675758d57999a1e891fe", # "terminal": "API" # }, @@ -304,24 +192,24 @@ table_name = 'v_tbl_crude_oil_warning' # "funcOperation": "获取token" # } + # upload_data = { -# "groupNo": '', # 用户组id # "funcModule": '研究报告信息', # "funcOperation": '上传原油价格预测报告', # "data": { -# "ownerAccount": 'arui', # 报告所属用户账号 +# "groupNo": '', # 用户组id +# "ownerAccount": '27663', # 报告所属用户账号 27663 - 刘小朋 # "reportType": 'OIL_PRICE_FORECAST', # 报告类型,固定为OIL_PRICE_FORECAST -# "fileName": '2000-40-5-50--100-原油指标数据.xlsx-Brent活跃合约--2024-09-06-15-01-29-预测报告.pdf', # 文件名称 +# "fileName": '', # 文件名称 # "fileBase64": '', # 文件内容base64 # "categoryNo": 'yyjgycbg', # 研究报告分类编码 # "smartBusinessClassCode": 'YCJGYCBG', # 分析报告分类编码 -# "reportEmployeeCode": "E40116", # 报告人 -# "reportDeptCode": "D0044", # 报告部门 +# "reportEmployeeCode": "E40482", # 报告人 E40482 - 管理员 0000027663 - 刘小朋 +# "reportDeptCode": "002000621000", # 报告部门 - 002000621000 SH期货研究部 # "productGroupCode": "RAW_MATERIAL" # 商品分类 # } # } - # warning_data = { # "groupNo": '', # 用户组id # "funcModule": '原油特征停更预警', @@ -343,6 +231,7 @@ table_name = 'v_tbl_crude_oil_warning' # } # } + # push_data_value_list_data = { # "funcModule": "数据表信息列表", # "funcOperation": "新增", @@ -366,27 +255,138 @@ table_name = 'v_tbl_crude_oil_warning' # } # # 八大维度数据项编码 # bdwd_items = { -# 'ciri': 'yyycbdwdcr', -# 'benzhou': 'yyycbdwdbz', -# 'cizhou': 'yyycbdwdcz', -# 'gezhou': 'yyycbdwdgz', -# 'ciyue': 'yyycbdwdcy', -# 'cieryue': 'yyycbdwdcey', -# 'cisanyue': 'yyycbdwdcsy', -# 'cisiyue': 'yyycbdwdcsiy', +# 'ciri': '原油大数据预测|FORECAST|PRICE|T', +# 'benzhou': '原油大数据预测|FORECAST|PRICE|W', +# 'cizhou': '原油大数据预测|FORECAST|PRICE|W_1', +# 'gezhou': '原油大数据预测|FORECAST|PRICE|W_2', +# 'ciyue': '原油大数据预测|FORECAST|PRICE|M_1', +# 'cieryue': '原油大数据预测|FORECAST|PRICE|M_2', +# 'cisanyue': '原油大数据预测|FORECAST|PRICE|M_3', +# 'cisiyue': '原油大数据预测|FORECAST|PRICE|M_4', # } # # 报告中八大维度数据项重命名 -# columnsrename = {'yyycbdwdbz': '本周', 'yyycbdwdcey': '次二月', 'yyycbdwdcr': '次日', 'yyycbdwdcsiy': '次四月', -# 'yyycbdwdcsy': '次三月', 'yyycbdwdcy': '次月', 'yyycbdwdcz': '次周', 'yyycbdwdgz': '隔周', } -# # 北京环境数据库 -# host = '192.168.101.27' +# columnsrename = { +# '原油大数据预测|FORECAST|PRICE|T': '次日', '原油大数据预测|FORECAST|PRICE|W': '本周', +# '原油大数据预测|FORECAST|PRICE|W_1': '次周', '原油大数据预测|FORECAST|PRICE|W_2': '隔周', +# '原油大数据预测|FORECAST|PRICE|M_1': '次月', '原油大数据预测|FORECAST|PRICE|M_2': '次二月', +# '原油大数据预测|FORECAST|PRICE|M_3': '次三月', '原油大数据预测|FORECAST|PRICE|M_4': '次四月' +# } + +# # 生产环境数据库 +# host = 'rm-2zehj3r1n60ttz9x5.mysql.rds.aliyuncs.com' # port = 3306 -# dbusername = 'root' -# password = '123456' -# dbname = 'jingbo_test' +# dbusername = 'jingbo' +# password = 'shihua@123' +# dbname = 'jingbo' # table_name = 'v_tbl_crude_oil_warning' + +# 变量定义--测试环境 +server_host = '192.168.100.53:8080' # 内网 +# server_host = '183.242.74.28' # 外网 +login_pushreport_url = f"http://{server_host}/jingbo-dev/api/server/login" +upload_url = f"http://{server_host}/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave" +upload_warning_url = f"http://{server_host}/jingbo-dev/api/basicBuiness/crudeOilWarning/save" +query_data_list_item_nos_url = f"http://{server_host}/jingbo-dev/api/warehouse/dwDataItem/queryDataListItemNos" +# 上传数据项值 +push_data_value_list_url = f"http://{server_host}/jingbo-dev/api/dw/dataValue/pushDataValueList" + +login_data = { + "data": { + "account": "api_test", + # "password": "MmVmNzNlOWI0MmY0ZDdjZGUwNzE3ZjFiMDJiZDZjZWU=", # Shihua@123456 + "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", # 123456 + "tenantHashCode": "8a4577dbd919675758d57999a1e891fe", + "terminal": "API" + }, + "funcModule": "API", + "funcOperation": "获取token" +} + +upload_data = { + "groupNo": '', # 用户组id + "funcModule": '研究报告信息', + "funcOperation": '上传原油价格预测报告', + "data": { + "ownerAccount": 'arui', # 报告所属用户账号 + "reportType": 'OIL_PRICE_FORECAST', # 报告类型,固定为OIL_PRICE_FORECAST + "fileName": '2000-40-5-50--100-原油指标数据.xlsx-Brent活跃合约--2024-09-06-15-01-29-预测报告.pdf', # 文件名称 + "fileBase64": '', # 文件内容base64 + "categoryNo": 'yyjgycbg', # 研究报告分类编码 + "smartBusinessClassCode": 'YCJGYCBG', # 分析报告分类编码 + "reportEmployeeCode": "E40116", # 报告人 + "reportDeptCode": "D0044", # 报告部门 + "productGroupCode": "RAW_MATERIAL" # 商品分类 + } +} + + +warning_data = { + "groupNo": '', # 用户组id + "funcModule": '原油特征停更预警', + "funcOperation": '原油特征停更预警', + "data": { + 'WARNING_TYPE_NAME': '特征数据停更预警', + 'WARNING_CONTENT': '', + 'WARNING_DATE': '' + } +} + +query_data_list_item_nos_data = { + "funcModule": "数据项", + "funcOperation": "查询", + "data": { + "dateStart": "20200101", + "dateEnd": "20241231", + "dataItemNoList": ["Brentzdj", "Brentzgj"] # 数据项编码,代表 brent最低价和最高价 + } +} + +push_data_value_list_data = { + "funcModule": "数据表信息列表", + "funcOperation": "新增", + "data": [ + {"dataItemNo": "91230600716676129", + "dataDate": "20230113", + "dataStatus": "add", + "dataValue": 100.11 + }, + {"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY", + "dataDate": "20230113", + "dataStatus": "add", + "dataValue": 100.55 + }, + {"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY", + "dataDate": "20230113", + "dataStatus": "add", + "dataValue": 100.55 + } + ] +} +# 八大维度数据项编码 +bdwd_items = { + 'ciri': 'yyycbdwdcr', + 'benzhou': 'yyycbdwdbz', + 'cizhou': 'yyycbdwdcz', + 'gezhou': 'yyycbdwdgz', + 'ciyue': 'yyycbdwdcy', + 'cieryue': 'yyycbdwdcey', + 'cisanyue': 'yyycbdwdcsy', + 'cisiyue': 'yyycbdwdcsiy', +} + +# 报告中八大维度数据项重命名 +columnsrename = {'yyycbdwdbz': '本周', 'yyycbdwdcey': '次二月', 'yyycbdwdcr': '次日', 'yyycbdwdcsiy': '次四月', + 'yyycbdwdcsy': '次三月', 'yyycbdwdcy': '次月', 'yyycbdwdcz': '次周', 'yyycbdwdgz': '隔周', } +# 北京环境数据库 +host = '192.168.101.27' +port = 3306 +dbusername = 'root' +password = '123456' +dbname = 'jingbo_test' +table_name = 'v_tbl_crude_oil_warning' + DEFAULT_CONFIG = { 'feature_factor_frequency': 'D', 'strategy_id': 1, @@ -404,14 +404,14 @@ DEFAULT_CONFIG = { # 开关 is_train = True # 是否训练 is_debug = False # 是否调试 -is_eta = True # 是否使用eta接口 +is_eta = False # 是否使用eta接口 is_market = False # 是否通过市场信息平台获取特征 ,在is_eta 为true 的情况下生效 is_timefurture = True # 是否使用时间特征 is_fivemodels = False # 是否使用之前保存的最佳的5个模型 is_edbcode = False # 特征使用edbcoding列表中的 is_edbnamelist = False # 自定义特征,对应上面的edbnamelist is_update_eta = True # 预测结果上传到eta -is_update_report = True # 是否上传报告 +is_update_report = False # 是否上传报告 is_update_warning_data = False # 是否上传预警数据 is_update_predict_value = True # 是否上传预测值到市场信息平台 is_del_corr = 0.6 # 是否删除相关性高的特征,取值为 0-1 ,0 为不删除,0.6 表示删除相关性小于0.6的特征 diff --git a/config_jingbo_zhoudu.py b/config_jingbo_zhoudu.py index 784d8d9..fd3ecbc 100644 --- a/config_jingbo_zhoudu.py +++ b/config_jingbo_zhoudu.py @@ -119,125 +119,19 @@ 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" -upload_warning_url = "http://10.200.32.39/jingbo-api/api/basicBuiness/crudeOilWarning/save" -query_data_list_item_nos_url = f"http://{server_host}/jingbo-api/api/warehouse/dwDataItem/queryDataListItemNos" -# 上传数据项值 -push_data_value_list_url = f"http://{server_host}/jingbo-api/api/dw/dataValue/pushDataValueList" - -login_data = { - "data": { - "account": "api_dev", - "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", - "tenantHashCode": "8a4577dbd919675758d57999a1e891fe", - "terminal": "API" - }, - "funcModule": "API", - "funcOperation": "获取token" -} - - -upload_data = { - "funcModule": '研究报告信息', - "funcOperation": '上传原油价格预测报告', - "data": { - "groupNo": '', # 用户组id - "ownerAccount": '27663', # 报告所属用户账号 27663 - 刘小朋 - "reportType": 'OIL_PRICE_FORECAST', # 报告类型,固定为OIL_PRICE_FORECAST - "fileName": '', # 文件名称 - "fileBase64": '', # 文件内容base64 - "categoryNo": 'yyjgycbg', # 研究报告分类编码 - "smartBusinessClassCode": 'YCJGYCBG', # 分析报告分类编码 - "reportEmployeeCode": "E40482", # 报告人 E40482 - 管理员 0000027663 - 刘小朋 - "reportDeptCode": "002000621000", # 报告部门 - 002000621000 SH期货研究部 - "productGroupCode": "RAW_MATERIAL" # 商品分类 - } -} - -warning_data = { - "groupNo": '', # 用户组id - "funcModule": '原油特征停更预警', - "funcOperation": '原油特征停更预警', - "data": { - 'WARNING_TYPE_NAME': '特征数据停更预警', - 'WARNING_CONTENT': '', - 'WARNING_DATE': '' - } -} - -query_data_list_item_nos_data = { - "funcModule": "数据项", - "funcOperation": "查询", - "data": { - "dateStart": "20200101", - "dateEnd": "20241231", - "dataItemNoList": ["Brentzdj", "Brentzgj"] # 数据项编码,代表 brent最低价和最高价 - } -} - - -push_data_value_list_data = { - "funcModule": "数据表信息列表", - "funcOperation": "新增", - "data": [ - {"dataItemNo": "91230600716676129", - "dataDate": "20230113", - "dataStatus": "add", - "dataValue": 100.11 - }, - {"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY", - "dataDate": "20230113", - "dataStatus": "add", - "dataValue": 100.55 - }, - {"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY", - "dataDate": "20230113", - "dataStatus": "add", - "dataValue": 100.55 - } - ] -} -# 八大维度数据项编码 -bdwd_items = { - 'ciri': '原油大数据预测|FORECAST|PRICE|T', - 'benzhou': '原油大数据预测|FORECAST|PRICE|W', - 'cizhou': '原油大数据预测|FORECAST|PRICE|W_1', - 'gezhou': '原油大数据预测|FORECAST|PRICE|W_2', - 'ciyue': '原油大数据预测|FORECAST|PRICE|M_1', - 'cieryue': '原油大数据预测|FORECAST|PRICE|M_2', - 'cisanyue': '原油大数据预测|FORECAST|PRICE|M_3', - 'cisiyue': '原油大数据预测|FORECAST|PRICE|M_4', -} - - -# 生产环境数据库 -host = 'rm-2zehj3r1n60ttz9x5.mysql.rds.aliyuncs.com' -port = 3306 -dbusername = 'jingbo' -password = 'shihua@123' -dbname = 'jingbo' -table_name = 'v_tbl_crude_oil_warning' - - -# # # 变量定义--测试环境 -# server_host = '192.168.100.53:8080' # 内网 -# # server_host = '183.242.74.28' # 外网 - -# login_pushreport_url = f"http://{server_host}/jingbo-dev/api/server/login" -# upload_url = f"http://{server_host}/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave" -# upload_warning_url = f"http://{server_host}/jingbo-dev/api/basicBuiness/crudeOilWarning/save" -# query_data_list_item_nos_url = f"http://{server_host}/jingbo-dev/api/warehouse/dwDataItem/queryDataListItemNos" +# # 变量定义--线上环境 +# 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" +# upload_warning_url = "http://10.200.32.39/jingbo-api/api/basicBuiness/crudeOilWarning/save" +# query_data_list_item_nos_url = f"http://{server_host}/jingbo-api/api/warehouse/dwDataItem/queryDataListItemNos" # # 上传数据项值 -# push_data_value_list_url = f"http://{server_host}/jingbo-dev/api/dw/dataValue/pushDataValueList" +# push_data_value_list_url = f"http://{server_host}/jingbo-api/api/dw/dataValue/pushDataValueList" # login_data = { # "data": { -# "account": "api_test", -# # "password": "MmVmNzNlOWI0MmY0ZDdjZGUwNzE3ZjFiMDJiZDZjZWU=", # Shihua@123456 -# "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", # 123456 +# "account": "api_dev", +# "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", # "tenantHashCode": "8a4577dbd919675758d57999a1e891fe", # "terminal": "API" # }, @@ -245,24 +139,26 @@ table_name = 'v_tbl_crude_oil_warning' # "funcOperation": "获取token" # } + # upload_data = { # "funcModule": '研究报告信息', # "funcOperation": '上传原油价格预测报告', # "data": { -# "ownerAccount": 'arui', # 报告所属用户账号 +# "groupNo": '', # 用户组id +# "ownerAccount": '27663', # 报告所属用户账号 27663 - 刘小朋 # "reportType": 'OIL_PRICE_FORECAST', # 报告类型,固定为OIL_PRICE_FORECAST -# "fileName": '2000-40-5-50--100-原油指标数据.xlsx-Brent活跃合约--2024-09-06-15-01-29-预测报告.pdf', # 文件名称 +# "fileName": '', # 文件名称 # "fileBase64": '', # 文件内容base64 # "categoryNo": 'yyjgycbg', # 研究报告分类编码 # "smartBusinessClassCode": 'YCJGYCBG', # 分析报告分类编码 -# "reportEmployeeCode": "E40116", # 报告人 -# "reportDeptCode": "D0044", # 报告部门 +# "reportEmployeeCode": "E40482", # 报告人 E40482 - 管理员 0000027663 - 刘小朋 +# "reportDeptCode": "002000621000", # 报告部门 - 002000621000 SH期货研究部 # "productGroupCode": "RAW_MATERIAL" # 商品分类 # } # } - # warning_data = { +# "groupNo": '', # 用户组id # "funcModule": '原油特征停更预警', # "funcOperation": '原油特征停更预警', # "data": { @@ -282,6 +178,7 @@ table_name = 'v_tbl_crude_oil_warning' # } # } + # push_data_value_list_data = { # "funcModule": "数据表信息列表", # "funcOperation": "新增", @@ -305,26 +202,129 @@ table_name = 'v_tbl_crude_oil_warning' # } # # 八大维度数据项编码 # bdwd_items = { -# 'ciri': 'yyycbdwdcr', -# 'benzhou': 'yyycbdwdbz', -# 'cizhou': 'yyycbdwdcz', -# 'gezhou': 'yyycbdwdgz', -# 'ciyue': 'yyycbdwdcy', -# 'cieryue': 'yyycbdwdcey', -# 'cisanyue': 'yyycbdwdcsy', -# 'cisiyue': 'yyycbdwdcsiy', +# 'ciri': '原油大数据预测|FORECAST|PRICE|T', +# 'benzhou': '原油大数据预测|FORECAST|PRICE|W', +# 'cizhou': '原油大数据预测|FORECAST|PRICE|W_1', +# 'gezhou': '原油大数据预测|FORECAST|PRICE|W_2', +# 'ciyue': '原油大数据预测|FORECAST|PRICE|M_1', +# 'cieryue': '原油大数据预测|FORECAST|PRICE|M_2', +# 'cisanyue': '原油大数据预测|FORECAST|PRICE|M_3', +# 'cisiyue': '原油大数据预测|FORECAST|PRICE|M_4', # } -# # 北京环境数据库 -# host = '192.168.101.27' +# # 生产环境数据库 +# host = 'rm-2zehj3r1n60ttz9x5.mysql.rds.aliyuncs.com' # port = 3306 -# dbusername = 'root' -# password = '123456' -# dbname = 'jingbo_test' +# dbusername = 'jingbo' +# password = 'shihua@123' +# dbname = 'jingbo' # table_name = 'v_tbl_crude_oil_warning' +# # 变量定义--测试环境 +server_host = '192.168.100.53:8080' # 内网 +# server_host = '183.242.74.28' # 外网 + +login_pushreport_url = f"http://{server_host}/jingbo-dev/api/server/login" +upload_url = f"http://{server_host}/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave" +upload_warning_url = f"http://{server_host}/jingbo-dev/api/basicBuiness/crudeOilWarning/save" +query_data_list_item_nos_url = f"http://{server_host}/jingbo-dev/api/warehouse/dwDataItem/queryDataListItemNos" +# 上传数据项值 +push_data_value_list_url = f"http://{server_host}/jingbo-dev/api/dw/dataValue/pushDataValueList" + +login_data = { + "data": { + "account": "api_test", + # "password": "MmVmNzNlOWI0MmY0ZDdjZGUwNzE3ZjFiMDJiZDZjZWU=", # Shihua@123456 + "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", # 123456 + "tenantHashCode": "8a4577dbd919675758d57999a1e891fe", + "terminal": "API" + }, + "funcModule": "API", + "funcOperation": "获取token" +} + +upload_data = { + "funcModule": '研究报告信息', + "funcOperation": '上传原油价格预测报告', + "data": { + "ownerAccount": 'arui', # 报告所属用户账号 + "reportType": 'OIL_PRICE_FORECAST', # 报告类型,固定为OIL_PRICE_FORECAST + "fileName": '2000-40-5-50--100-原油指标数据.xlsx-Brent活跃合约--2024-09-06-15-01-29-预测报告.pdf', # 文件名称 + "fileBase64": '', # 文件内容base64 + "categoryNo": 'yyjgycbg', # 研究报告分类编码 + "smartBusinessClassCode": 'YCJGYCBG', # 分析报告分类编码 + "reportEmployeeCode": "E40116", # 报告人 + "reportDeptCode": "D0044", # 报告部门 + "productGroupCode": "RAW_MATERIAL" # 商品分类 + } +} + + +warning_data = { + "funcModule": '原油特征停更预警', + "funcOperation": '原油特征停更预警', + "data": { + 'WARNING_TYPE_NAME': '特征数据停更预警', + 'WARNING_CONTENT': '', + 'WARNING_DATE': '' + } +} + +query_data_list_item_nos_data = { + "funcModule": "数据项", + "funcOperation": "查询", + "data": { + "dateStart": "20200101", + "dateEnd": "20241231", + "dataItemNoList": ["Brentzdj", "Brentzgj"] # 数据项编码,代表 brent最低价和最高价 + } +} + +push_data_value_list_data = { + "funcModule": "数据表信息列表", + "funcOperation": "新增", + "data": [ + {"dataItemNo": "91230600716676129", + "dataDate": "20230113", + "dataStatus": "add", + "dataValue": 100.11 + }, + {"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY", + "dataDate": "20230113", + "dataStatus": "add", + "dataValue": 100.55 + }, + {"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY", + "dataDate": "20230113", + "dataStatus": "add", + "dataValue": 100.55 + } + ] +} +# 八大维度数据项编码 +bdwd_items = { + 'ciri': 'yyycbdwdcr', + 'benzhou': 'yyycbdwdbz', + 'cizhou': 'yyycbdwdcz', + 'gezhou': 'yyycbdwdgz', + 'ciyue': 'yyycbdwdcy', + 'cieryue': 'yyycbdwdcey', + 'cisanyue': 'yyycbdwdcsy', + 'cisiyue': 'yyycbdwdcsiy', +} + + +# 北京环境数据库 +host = '192.168.101.27' +port = 3306 +dbusername = 'root' +password = '123456' +dbname = 'jingbo_test' +table_name = 'v_tbl_crude_oil_warning' + + DEFAULT_CONFIG = { 'feature_factor_frequency': 'D', 'strategy_id': 1, @@ -342,14 +342,14 @@ DEFAULT_CONFIG = { # 开关 is_train = True # 是否训练 is_debug = False # 是否调试 -is_eta = True # 是否使用eta接口 +is_eta = False # 是否使用eta接口 is_market = False # 是否通过市场信息平台获取特征 ,在is_eta 为true 的情况下生效 is_timefurture = True # 是否使用时间特征 is_fivemodels = False # 是否使用之前保存的最佳的5个模型 is_edbcode = False # 特征使用edbcoding列表中的 is_edbnamelist = False # 自定义特征,对应上面的edbnamelist is_update_eta = True # 预测结果上传到eta -is_update_report = True # 是否上传报告 +is_update_report = False # 是否上传报告 is_update_warning_data = False # 是否上传预警数据 is_update_predict_value = True # 是否上传预测值到市场信息平台 is_del_corr = 0.6 # 是否删除相关性高的特征,取值为 0-1 ,0 为不删除,0.6 表示删除相关性小于0.6的特征 diff --git a/config_juxiting.py b/config_juxiting.py index 92a8f38..7603e39 100644 --- a/config_juxiting.py +++ b/config_juxiting.py @@ -432,8 +432,8 @@ is_timefurture = True # 是否使用时间特征 is_fivemodels = False # 是否使用之前保存的最佳的5个模型 is_edbcode = False # 特征使用edbcoding列表中的 is_edbnamelist = False # 自定义特征,对应上面的edbnamelist -is_update_eta = True # 预测结果上传到eta -is_update_report = False # 是否上传报告 +is_update_eta = False # 预测结果上传到eta +is_update_report = True # 是否上传报告 is_update_warning_data = True # 是否上传预警数据 is_update_predict_value = True # 是否上传预测值到市场信息平台 is_del_corr = 0.6 # 是否删除相关性高的特征,取值为 0-1 ,0 为不删除,0.6 表示删除相关性小于0.6的特征 diff --git a/config_juxiting_yuedu.py b/config_juxiting_yuedu.py index 1f51263..ab8b83b 100644 --- a/config_juxiting_yuedu.py +++ b/config_juxiting_yuedu.py @@ -1,3 +1,4 @@ +from decimal import Decimal import logging import os import logging.handlers @@ -416,18 +417,32 @@ password = '123456' dbname = 'jingbo_test' table_name = 'v_tbl_crude_oil_warning' +DEFAULT_CONFIG = { + 'feature_factor_frequency': 'D', + 'strategy_id': 2, + 'model_evaluation_id': 1, + 'tenant_code': '', + 'version_num': Decimal(1), + 'delete_flag': '0', + 'create_user': 'admin', + 'create_date': datetime.datetime.now(), + 'update_user': 'admin', + 'update_date': datetime.datetime.now(), + 'oil_code': 'PP', + 'oil_name': 'PP期货', +} # 开关 is_train = True # 是否训练 is_debug = False # 是否调试 -is_eta = True # 是否使用eta接口 +is_eta = False # 是否使用eta接口 is_market = False # 是否通过市场信息平台获取特征 ,在is_eta 为true 的情况下生效 is_timefurture = True # 是否使用时间特征 is_fivemodels = False # 是否使用之前保存的最佳的5个模型 is_edbcode = False # 特征使用edbcoding列表中的 is_edbnamelist = False # 自定义特征,对应上面的edbnamelist is_update_eta = True # 预测结果上传到eta -is_update_report = True # 是否上传报告 +is_update_report = False # 是否上传报告 is_update_warning_data = False # 是否上传预警数据 is_update_predict_value = True # 是否上传预测值到市场信息平台 is_del_corr = 0 # 是否删除相关性高的特征,取值为 0-1 ,0 为不删除,0.6 表示删除相关性小于0.6的特征 @@ -452,16 +467,20 @@ add_kdj = False # 是否添加kdj指标 if add_kdj and is_edbnamelist: edbnamelist = edbnamelist+['K', 'D', 'J'] + # 模型参数 -y = 'AVG-金能大唐久泰青州' -avg_cols = [ - 'PP:拉丝:1102K:出厂价:青州:国家能源宁煤(日)', - 'PP:拉丝:L5E89:出厂价:华北(第二区域):内蒙古久泰新材料(日)', - 'PP:拉丝:L5E89:出厂价:河北、鲁北:大唐内蒙多伦(日)', - 'PP:拉丝:HP550J:市场价:青岛:金能化学(日)' -] -offsite = 80 -offsite_col = ['PP:拉丝:HP550J:市场价:青岛:金能化学(日)'] +# y = 'AVG-金能大唐久泰青州' +# avg_cols = [ +# 'PP:拉丝:1102K:出厂价:青州:国家能源宁煤(日)', +# 'PP:拉丝:L5E89:出厂价:华北(第二区域):内蒙古久泰新材料(日)', +# 'PP:拉丝:L5E89:出厂价:河北、鲁北:大唐内蒙多伦(日)', +# 'PP:拉丝:HP550J:市场价:青岛:金能化学(日)' +# ] +# offsite = 80 +# offsite_col = ['PP:拉丝:HP550J:市场价:青岛:金能化学(日)'] + +y = 'MAIN_CONFT_SETTLE_PRICE' + horizon = 4 # 预测的步长 input_size = 16 # 输入序列长度 train_steps = 50 if is_debug else 1000 # 训练步数,用来限定epoch次数 diff --git a/config_juxiting_zhoudu.py b/config_juxiting_zhoudu.py index d298eb2..b7d58cb 100644 --- a/config_juxiting_zhoudu.py +++ b/config_juxiting_zhoudu.py @@ -450,15 +450,15 @@ DEFAULT_CONFIG = { # 开关 is_train = True # 是否训练 is_debug = False # 是否调试 -is_eta = False # 是否使用eta接口 +is_eta = True # 是否使用eta接口 is_market = True # 是否通过市场信息平台获取特征 ,在is_eta 为true 的情况下生效 is_timefurture = True # 是否使用时间特征 is_fivemodels = False # 是否使用之前保存的最佳的5个模型 is_edbcode = False # 特征使用edbcoding列表中的 is_edbnamelist = False # 自定义特征,对应上面的edbnamelist -is_update_eta = True # 预测结果上传到eta -is_update_report = False # 是否上传报告 -is_update_warning_data = True # 是否上传预警数据 +is_update_eta = False # 预测结果上传到eta +is_update_report = True # 是否上传报告 +is_update_warning_data = False # 是否上传预警数据 is_update_predict_value = True # 是否上传预测值到市场信息平台 is_del_corr = 0.6 # 是否删除相关性高的特征,取值为 0-1 ,0 为不删除,0.6 表示删除相关性小于0.6的特征 is_del_tow_month = True # 是否删除两个月不更新的特征 @@ -475,7 +475,7 @@ print("数据库连接成功", host, dbname, dbusername) # 数据截取日期 start_year = 2015 # 数据开始年份 end_time = '' # 数据截取日期 -freq = 'WW' # 时间频率,"D": 天 "W": 周"M": 月"Q": 季度"A": 年 "H": 小时 "T": 分钟 "S": 秒 "B": 工作日 "WW" 自定义周 +freq = 'W' # 时间频率,"D": 天 "W": 周"M": 月"Q": 季度"A": 年 "H": 小时 "T": 分钟 "S": 秒 "B": 工作日 "WW" 自定义周 delweekenday = True if freq == 'B' else False # 是否删除周末数据 is_corr = False # 特征是否参与滞后领先提升相关系数 add_kdj = False # 是否添加kdj指标 diff --git a/lib/dataread.py b/lib/dataread.py index c909179..41b254e 100644 --- a/lib/dataread.py +++ b/lib/dataread.py @@ -516,7 +516,8 @@ def featureAnalysis(df, dataset, y): import matplotlib.pyplot as plt # 选择特征和标签列 X = df.drop(['ds', 'y'], axis=1) # 特征集,排除时间戳和标签列 - yy = df['y'] # 标签集 + yy = df['y'] # 标签集 + # 标签集自相关函数分析 from statsmodels.graphics.tsaplots import plot_acf @@ -2439,6 +2440,15 @@ def get_high_low_data(df): df = pd.merge(df, df1, how='left', on='date') return df +def get_shujuxiang_data(df): + # 读取excel 从第五行开始 + df1 = pd.read_excel(os.path.join(config.dataset, '数据项下载.xls'), header=5, names=[ + 'numid', 'date', 'MAIN_CONFT_SETTLE_PRICE']) + df1['MAIN_CONFT_SETTLE_PRICE'] = df1['MAIN_CONFT_SETTLE_PRICE'].str.replace(',', '').astype(float) + # 合并数据 + df = pd.merge(df, df1, how='left', on='date') + return df + def get_waring_data(): '''获取取消订阅的指标数据''' diff --git a/main_juxiting.py b/main_juxiting.py index 4469ff6..a202f29 100644 --- a/main_juxiting.py +++ b/main_juxiting.py @@ -191,7 +191,7 @@ def sql_inset_predict(global_config): ] insert_query = f""" - INSERT INTO v_tbl_predict_prediction_results ( + INSERT INTO v_tbl_predict_pp_prediction_results ( feature_factor_frequency, strategy_id, oil_code, oil_name, data_date, market_price, day_price, week_price, second_week_price, next_week_price, next_month_price, next_february_price, next_march_price, next_april_price, @@ -300,18 +300,17 @@ def predict_main(): if is_market: logger.info('从市场信息平台获取数据...') - try: - # 如果是测试环境,最高价最低价取excel文档 - if server_host == '192.168.100.53': - logger.info('从excel文档获取市场信息平台指标') - df_zhibiaoshuju = get_high_low_data(df_zhibiaoshuju) - else: - logger.info('从市场信息平台获取数据') - df_zhibiaoshuju = get_market_data( - end_time, df_zhibiaoshuju) - - except: - logger.info('市场信息平台数据项-eta数据项 拼接失败') + # try: + # 如果是测试环境,最高价最低价取excel文档 + if server_host == '192.168.100.53': + logger.info('从excel文档获取市场信息平台指标') + df_zhibiaoshuju = get_shujuxiang_data(df_zhibiaoshuju) + else: + logger.info('从市场信息平台获取数据') + df_zhibiaoshuju = get_market_data( + end_time, df_zhibiaoshuju) + # except: + # logger.info('市场信息平台数据项-eta数据项 拼接失败') # 保存到xlsx文件的sheet表 with pd.ExcelWriter(os.path.join(dataset, data_set)) as file: @@ -503,21 +502,20 @@ def predict_main(): logger.info('模型训练完成') - logger.info('训练数据绘图ing') - model_results3 = model_losss_juxiting( - sqlitedb, end_time=global_config['end_time'], is_fivemodels=global_config['is_fivemodels']) - logger.info('训练数据绘图end') + # logger.info('训练数据绘图ing') + # model_results3 = model_losss_juxiting( + # sqlitedb, end_time=global_config['end_time'], is_fivemodels=global_config['is_fivemodels']) + # logger.info('训练数据绘图end') - # # 模型报告 - logger.info('制作报告ing') - title = f'{settings}--{end_time}-预测报告' # 报告标题 - reportname = f'聚烯烃PP大模型日度预测--{end_time}.pdf' # 报告文件名 - reportname = reportname.replace(':', '-') # 替换冒号 - pp_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'聚烯烃PP大模型日度预测--{end_time}.pdf' # 报告文件名 + # reportname = reportname.replace(':', '-') # 替换冒号 + # pp_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') push_market_value() sql_inset_predict(global_config) @@ -547,15 +545,17 @@ def predict_main(): if __name__ == '__main__': # global end_time # 遍历2024-11-25 到 2024-12-3 之间的工作日日期 - # for i_time in pd.date_range('2025-4-14', '2025-4-15', freq='B'): - # try: - # global_config['end_time'] = i_time.strftime('%Y-%m-%d') - # predict_main() - # except Exception as e: - # logger.info(f'预测失败:{e}') - # continue + for i_time in pd.date_range('2025-6-2', '2025-7-23', freq='B'): + try: + global_config['end_time'] = i_time.strftime('%Y-%m-%d') + global_config['db_mysql'].connect() + predict_main() + except Exception as e: + logger.info(f'预测失败:{e}') + continue + + # predict_main() - predict_main() # push_market_value() # sql_inset_predict(global_config) diff --git a/main_juxiting_yuedu.py b/main_juxiting_yuedu.py index 99087d9..6063256 100644 --- a/main_juxiting_yuedu.py +++ b/main_juxiting_yuedu.py @@ -2,8 +2,8 @@ from lib.dataread import * from config_juxiting_yuedu import * -from lib.tools import SendMail, exception_logger -from models.nerulforcastmodels import ex_Model, model_losss_juxiting, tansuanli_export_pdf, pp_export_pdf +from lib.tools import SendMail, convert_df_to_pydantic, exception_logger, get_modelsname +from models.nerulforcastmodels import ex_Model, model_losss_juxiting, pp_export_pdf import datetime import torch torch.set_float32_matmul_precision("high") @@ -13,9 +13,9 @@ global_config.update({ 'logger': logger, 'dataset': dataset, 'y': y, - 'offsite_col': offsite_col, - 'avg_cols': avg_cols, - 'offsite': offsite, + # 'offsite_col': offsite_col, + # 'avg_cols': avg_cols, + # 'offsite': offsite, 'edbcodenamedict': edbcodenamedict, 'is_debug': is_debug, 'is_train': is_train, @@ -23,6 +23,7 @@ global_config.update({ 'is_update_report': is_update_report, 'settings': settings, 'bdwdname': bdwdname, + 'columnsrename': columnsrename, # 模型参数 @@ -84,7 +85,8 @@ global_config.update({ # 数据库配置 'sqlitedb': sqlitedb, 'is_bdwd': is_bdwd, - 'columnsrename':columnsrename, + 'db_mysql': db_mysql, + 'DEFAULT_CONFIG': DEFAULT_CONFIG, }) @@ -160,6 +162,97 @@ def push_market_value(): logger.error(f"推送数据失败: {e}") +def sql_inset_predict(global_config): + df = pd.read_csv(os.path.join(config.dataset, 'predict.csv')) + df['created_dt'] = pd.to_datetime(df['created_dt']) + df['ds'] = pd.to_datetime(df['ds']) + # 获取次月预测结果 + next_month_price_df = df[df['ds'] == df['ds'].min()] + # 获取次二月预测结果 + next_february_price_df = df.iloc[[1]] + # 获取次三月预测结果 + next_march_price_df = df.iloc[[2]] + # 获取次四月预测结果 + next_april_price_df = df[df['ds'] == df['ds'].max()] + + wd = ['next_month_price', 'next_february_price', + 'next_march_price', 'next_april_price'] + model_name_list, model_id_name_dict = get_modelsname(df, global_config) + + PRICE_COLUMNS = [ + 'day_price', 'week_price', 'second_week_price', 'next_week_price', + 'next_month_price', 'next_february_price', 'next_march_price', 'next_april_price' + ] + + params_list = [] + for df, price_type in zip([next_month_price_df, next_february_price_df, next_march_price_df, next_april_price_df], wd): + + update_columns = [ + "feature_factor_frequency = VALUES(feature_factor_frequency)", + "oil_code = VALUES(oil_code)", + "oil_name = VALUES(oil_name)", + "data_date = VALUES(data_date)", + "market_price = VALUES(market_price)", + f"{price_type} = VALUES({price_type})", + "model_evaluation_id = VALUES(model_evaluation_id)", + "tenant_code = VALUES(tenant_code)", + "version_num = VALUES(version_num)", + "delete_flag = VALUES(delete_flag)", + "update_user = VALUES(update_user)", + "update_date = VALUES(update_date)" + ] + + insert_query = f""" + INSERT INTO v_tbl_predict_pp_prediction_results ( + feature_factor_frequency, strategy_id, oil_code, oil_name, data_date, + market_price, day_price, week_price, second_week_price, next_week_price, + next_month_price, next_february_price, next_march_price, next_april_price, + model_evaluation_id, model_id, tenant_code, version_num, delete_flag, + create_user, create_date, update_user, update_date + ) VALUES ( + %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s + ) + ON DUPLICATE KEY UPDATE + {', '.join(update_columns)} + """ + + next_day_df = df[['ds', 'created_dt'] + model_name_list] + + pydantic_results = convert_df_to_pydantic( + next_day_df, model_id_name_dict, global_config) + if pydantic_results: + + for result in pydantic_results: + price_values = [None] * len(PRICE_COLUMNS) + price_index = PRICE_COLUMNS.index(price_type) + price_values[price_index] = next_day_df[model_id_name_dict[result.model_id]].values[0] + + params = ( + result.feature_factor_frequency, + result.strategy_id, + result.oil_code, + result.oil_name, + next_day_df['created_dt'].values[0], + result.market_price, + *price_values, + result.model_evaluation_id, + result.model_id, + result.tenant_code, + 1, + '0', + result.create_user, + result.create_date, + result.update_user, + result.update_date + ) + params_list.append(params) + affected_rows = config.db_mysql.execute_batch_insert( + insert_query, params_list) + config.logger.info(f"成功插入或更新 {affected_rows} 条记录") + config.db_mysql.close() + + + def predict_main(): """ 主预测函数,用于从 ETA 获取数据、处理数据、训练模型并进行预测。 @@ -392,15 +485,16 @@ def predict_main(): # push_market_value() # # 模型报告 - logger.info('制作报告ing') - title = f'{settings}--{end_time}-预测报告' # 报告标题 - reportname = f'聚烯烃PP大模型月度预测--{end_time}.pdf' # 报告文件名 - reportname = reportname.replace(':', '-') # 替换冒号 - pp_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'聚烯烃PP大模型月度预测--{end_time}.pdf' # 报告文件名 + # reportname = reportname.replace(':', '-') # 替换冒号 + # pp_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('模型训练完成') + sql_inset_predict(global_config) # # LSTM 单变量模型 # ex_Lstm(df,input_seq_len=input_size,output_seq_len=horizon,is_debug=is_debug,dataset=dataset) diff --git a/main_juxiting_zhoudu.py b/main_juxiting_zhoudu.py index 3ff723d..30438a0 100644 --- a/main_juxiting_zhoudu.py +++ b/main_juxiting_zhoudu.py @@ -158,12 +158,12 @@ def sql_inset_predict(global_config): df = pd.read_csv(os.path.join(config.dataset, 'predict.csv')) df['created_dt'] = pd.to_datetime(df['created_dt']) df['ds'] = pd.to_datetime(df['ds']) - # 获取次日预测结果 - next_day_df = df[df['ds'] == df['ds'].min()] - # 获取本周预测结果 - this_week_df = df[df['ds'] == df['ds'].max()] + # 获取次周预测结果 + second_week_price_df = df[df['ds'] == df['ds'].min()] + # 获取隔周周预测结果 + next_week_price_df = df[df['ds'] == df['ds'].max()] - wd = ['day_price', 'week_price'] + wd = ['second_week_price', 'next_week_price'] model_name_list, model_id_name_dict = get_modelsname(df, global_config) PRICE_COLUMNS = [ @@ -172,7 +172,7 @@ def sql_inset_predict(global_config): ] params_list = [] - for df, price_type in zip([next_day_df, this_week_df], wd): + for df, price_type in zip([second_week_price_df, next_week_price_df], wd): update_columns = [ "feature_factor_frequency = VALUES(feature_factor_frequency)", @@ -190,7 +190,7 @@ def sql_inset_predict(global_config): ] insert_query = f""" - INSERT INTO v_tbl_predict_prediction_results ( + INSERT INTO v_tbl_predict_pp_prediction_results ( feature_factor_frequency, strategy_id, oil_code, oil_name, data_date, market_price, day_price, week_price, second_week_price, next_week_price, next_month_price, next_february_price, next_march_price, next_april_price, @@ -238,7 +238,6 @@ def sql_inset_predict(global_config): config.logger.info(f"成功插入或更新 {affected_rows} 条记录") config.db_mysql.close() - def predict_main(): """ 主预测函数,用于从 ETA 获取数据、处理数据、训练模型并进行预测。 @@ -303,7 +302,7 @@ def predict_main(): # 如果是测试环境,最高价最低价取excel文档 if server_host == '192.168.100.53': logger.info('从excel文档获取市场信息平台指标') - df_zhibiaoshuju = get_high_low_data(df_zhibiaoshuju) + df_zhibiaoshuju = get_shujuxiang_data(df_zhibiaoshuju) else: logger.info('从市场信息平台获取数据') df_zhibiaoshuju = get_market_data( @@ -318,7 +317,7 @@ def predict_main(): df_zhibiaoliebiao.to_excel(file, sheet_name='指标列表', index=False) # 数据处理 - df = datachuli_juxiting(df_zhibiaoshuju, df_zhibiaoliebiao, y=global_config['y'], dataset=dataset, add_kdj=add_kdj, is_timefurture=is_timefurture, + df = zhoududatachuli(df_zhibiaoshuju, df_zhibiaoliebiao, y=global_config['y'], dataset=dataset, add_kdj=add_kdj, is_timefurture=is_timefurture, end_time=end_time) else: @@ -465,21 +464,20 @@ def predict_main(): logger.info('模型训练完成') - logger.info('训练数据绘图ing') - model_results3 = model_losss_juxiting( - sqlitedb, end_time=global_config['end_time'], is_fivemodels=global_config['is_fivemodels']) - logger.info('训练数据绘图end') + # logger.info('训练数据绘图ing') + # model_results3 = model_losss_juxiting( + # sqlitedb, end_time=global_config['end_time'], is_fivemodels=global_config['is_fivemodels']) + # logger.info('训练数据绘图end') - # # 模型报告 - logger.info('制作报告ing') - title = f'{settings}--{end_time}-预测报告' # 报告标题 - reportname = f'聚烯烃PP大模型周度预测--{end_time}.pdf' # 报告文件名 - reportname = reportname.replace(':', '-') # 替换冒号 - pp_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'聚烯烃PP大模型周度预测--{end_time}.pdf' # 报告文件名 + # reportname = reportname.replace(':', '-') # 替换冒号 + # pp_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') push_market_value() sql_inset_predict(global_config) @@ -509,15 +507,16 @@ def predict_main(): if __name__ == '__main__': # global end_time # 遍历2024-11-25 到 2024-12-3 之间的工作日日期 - # for i_time in pd.date_range('2025-4-14', '2025-4-15', freq='B'): - # try: - # global_config['end_time'] = i_time.strftime('%Y-%m-%d') - # predict_main() - # except Exception as e: - # logger.info(f'预测失败:{e}') - # continue + for i_time in pd.date_range('2025-7-18', '2025-7-23', freq='B'): + try: + global_config['end_time'] = i_time.strftime('%Y-%m-%d') + global_config['db_mysql'].connect() + predict_main() + except Exception as e: + logger.info(f'预测失败:{e}') + continue # predict_main() # push_market_value() - sql_inset_predict(global_config) + # sql_inset_predict(global_config) diff --git a/main_yuanyou.py b/main_yuanyou.py index 3aaeed2..ee2f185 100644 --- a/main_yuanyou.py +++ b/main_yuanyou.py @@ -580,8 +580,8 @@ def predict_main(): if __name__ == '__main__': # global end_time - # # 遍历2024-11-25 到 2024-12-3 之间的工作日日期 - # for i_time in pd.date_range('2025-6-19', '2025-6-28', freq='B'): + # 遍历2024-11-25 到 2024-12-3 之间的工作日日期 + # for i_time in pd.date_range('2024-9-12', '2024-10-7', freq='B'): # global_config['end_time'] = i_time.strftime('%Y-%m-%d') # global_config['db_mysql'].connect() # predict_main() diff --git a/main_yuanyou_yuedu.py b/main_yuanyou_yuedu.py index 5ff3673..9e6ba2e 100644 --- a/main_yuanyou_yuedu.py +++ b/main_yuanyou_yuedu.py @@ -590,7 +590,7 @@ def predict_main(): if __name__ == '__main__': # global end_time # 遍历2024-11-25 到 2024-12-3 之间的工作日日期 - for i_time in pd.date_range('2025-6-4', '2025-6-30', freq='B'): + for i_time in pd.date_range('2025-3-17', '2025-3-31', freq='B'): global_config['end_time'] = i_time.strftime('%Y-%m-%d') global_config['db_mysql'].connect() predict_main() diff --git a/main_yuanyou_zhoudu.py b/main_yuanyou_zhoudu.py index ebb4d29..9824dc9 100644 --- a/main_yuanyou_zhoudu.py +++ b/main_yuanyou_zhoudu.py @@ -492,7 +492,7 @@ def predict_main(): if __name__ == '__main__': # global end_time # 遍历2024-11-25 到 2024-12-3 之间的工作日日期 - for i_time in pd.date_range('2025-6-23', '2025-6-30', freq='B'): + for i_time in pd.date_range('2025-3-5', '2025-3-18', freq='B'): global_config['end_time'] = i_time.strftime('%Y-%m-%d') global_config['db_mysql'].connect() predict_main() diff --git a/models/nerulforcastmodels.py b/models/nerulforcastmodels.py index 7f6082c..739379a 100644 --- a/models/nerulforcastmodels.py +++ b/models/nerulforcastmodels.py @@ -165,8 +165,8 @@ def ex_Model(df, horizon, input_size, train_steps, val_check_steps, early_stop_p # VanillaTransformer(h=horizon, input_size=input_size, max_steps=train_steps, val_check_steps=val_check_steps, scaler_type='standard', ), //报错了 # Autoformer(h=horizon, input_size=input_size, max_steps=train_steps, val_check_steps=val_check_steps, scaler_type='standard', ), //报错了 - # NBEATS(h=horizon, input_size=input_size, max_steps=train_steps, val_check_steps=val_check_steps, scaler_type='standard', ), - # NBEATSx (h=horizon, input_size=input_size, max_steps=train_steps, val_check_steps=val_check_steps, scaler_type='standard',activation='ReLU', ), //报错 + NBEATS(h=horizon, input_size=input_size, max_steps=train_steps, val_check_steps=val_check_steps, scaler_type='standard', ), + # NBEATSx(h=horizon, input_size=input_size, max_steps=train_steps, val_check_steps=val_check_steps, scaler_type='standard',activation='ReLU', ), //报错 # HINT(h=horizon), ] @@ -439,12 +439,12 @@ def ex_Model_Juxiting(df, horizon, input_size, train_steps, val_check_steps, ear config.dataset, '*.joblib')), key=os.path.getctime) config.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( - config.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( + # config.dataset, "cross_validation.csv"), index=False) df_test['ds'] = pd.to_datetime(df_test['ds'], errors='coerce') @@ -2344,38 +2344,42 @@ def brent_export_pdf(num_indicators=475, num_models=21, num_dayindicator=202, in # 去掉created_dt 列 df4 = df4.drop(columns=['created_dt']) # 计算模型偏差率 - # 计算各列对于y列的差值百分比 - df3 = pd.DataFrame() # 存储偏差率 + try: + # 计算各列对于y列的差值百分比 + df3 = pd.DataFrame() # 存储偏差率 - # 删除有null的行 - df4 = df4.dropna() - df3['ds'] = df4['ds'] - for col in fivemodels_list: - df3[col] = round(abs(df4[col] - df4['y']) / df4['y'] * 100, 2) - # 找出决定系数前五的偏差率 - df3 = df3[['ds']+fivemodels_list.tolist()][-inputsize:] - # 找出上一预测区间的时间 - stime = df3['ds'].iloc[0] - etime = df3['ds'].iloc[-1] - # 添加偏差率表格 - fivemodels = '、'.join(eval_df['模型(Model)'].values[:5]) # 字符串形式,后面写入字符串使用 - content.append(Graphs.draw_text( - f'预测使用了{num_models}个模型进行训练,使用评估结果MAE前五的模型分别是 {fivemodels} ,模型上一预测区间 {stime} -- {etime}的偏差率(%)分别是:')) - # # 添加偏差率表格 - df3 = df3.T - df3 = df3.reset_index() - data = df3.values.tolist() - col_width = 500/len(df3.columns) - content.append(Graphs.draw_table(col_width, *data)) + # 删除有null的行 + df4 = df4.dropna() + df3['ds'] = df4['ds'] + for col in fivemodels_list: + df3[col] = round(abs(df4[col] - df4['y']) / df4['y'] * 100, 2) + # 找出决定系数前五的偏差率 + df3 = df3[['ds']+fivemodels_list.tolist()][-inputsize:] + # 找出上一预测区间的时间 + stime = df3['ds'].iloc[0] + etime = df3['ds'].iloc[-1] + # 添加偏差率表格 + fivemodels = '、'.join(eval_df['模型(Model)'].values[:5]) # 字符串形式,后面写入字符串使用 + content.append(Graphs.draw_text( + f'预测使用了{num_models}个模型进行训练,使用评估结果MAE前五的模型分别是 {fivemodels} ,模型上一预测区间 {stime} -- {etime}的偏差率(%)分别是:')) + # # 添加偏差率表格 + df3 = df3.T + df3 = df3.reset_index() + data = df3.values.tolist() + col_width = 500/len(df3.columns) + content.append(Graphs.draw_table(col_width, *data)) - content.append(Graphs.draw_little_title('上一周预测准确率:')) - df4 = sqlitedb.select_data('accuracy_rote', order_by='结束日期 desc', limit=1) - df4 = df4.T - df4 = df4.reset_index() - df4 = df4.T - data = df4.values.tolist() - col_width = 500/len(df4.columns) - content.append(Graphs.draw_table(col_width, *data)) + content.append(Graphs.draw_little_title('上一周预测准确率:')) + df4 = sqlitedb.select_data('accuracy_rote', order_by='结束日期 desc', limit=1) + df4 = df4.T + df4 = df4.reset_index() + df4 = df4.T + data = df4.values.tolist() + col_width = 500/len(df4.columns) + content.append(Graphs.draw_table(col_width, *data)) + except: + content.append(Graphs.draw_text('暂无')) + config.logger.info('偏差率计算错误,跳过') content.append(Graphs.draw_little_title('三、预测过程解析:')) # 特征、模型、参数配置 diff --git a/test/demo.py b/test/demo.py new file mode 100644 index 0000000..7af5090 --- /dev/null +++ b/test/demo.py @@ -0,0 +1,140 @@ +import requests +import json + + +def get_cptcha(): + url = 'https://marketinfo.jbshihua.com/jingbo-api/captcha' + res = requests.get(url) + res = json.loads(res.text) + res = res["data"]["img"] + imgurl = 'data:image/jpeg;base64,/' + res + res = requests.get(imgurl) + with open('cptcha.png', 'wb') as f: + f.write(res.content) + + +def main() -> dict: + login_url = "http://marketinfo.jbshihua.com/jingbo-api/api/server/login" + + login_data = { + "data": { + "account": "api_dev", + "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", + "tenantHashCode": "8a4577dbd919675758d57999a1e891fe", + "terminal": "API" + }, + "funcModule": "API", + "funcOperation": "获取token" + } + + query_data_list_item_nos_url = f"http://marketinfo.jbshihua.com/jingbo-api/api/warehouse/dwDataItem/queryDataListItemNos" + + query_data_list_item_nos_data = { + "funcModule": "数据项", + "funcOperation": "查询", + "data": { + "dateStart": "20200101", + "dateEnd": "20241231", + "dataItemNoList": ["Brentjsj"] # 数据项编码,代表 brent结算价 + } + } + login_res = requests.post( + url=login_url, json=login_data, timeout=(3, 5)) + text = json.loads(login_res.text) + if text["status"]: + token = text["data"]["accessToken"] + print('获取到的token', token) + headers = {"Authorization": token} + print('获取数据中...') + items_res = requests.post(url=query_data_list_item_nos_url, headers=headers, + json=query_data_list_item_nos_data, timeout=(3, 35)) + json_data = json.loads(items_res.text) + print(json_data) + return text + + return { + "result": token, + } + + +class AuthHandler: + def __init__(self): + # 初始化登录表单数据 + self.loginForm = { + 'captchaToken': '', + 'src': '' + } + self.loading = False + + def loadCaptcha(self): + """加载验证码图片""" + try: + self.loading = True + + # 发送 POST 请求获取验证码 + response = requests.post( + url="https://marketinfo.jbshihua.com/jingbo-api/captcha", + json={}, # 发送空 JSON 数据体 + timeout=10 # 设置超时时间为 10 秒 + ) + + # 检查响应状态码 + response.raise_for_status() + + # 处理响应数据 + data = response.json() + if data: + self.loginForm['captchaToken'] = data.get('token', '') + self.loginForm['src'] = "data:image/jpeg;base64," + \ + data.get('img', '') + + # 保存图片 + with open('cptcha.png', 'wb') as f: + f.write(res.content) + + except requests.exceptions.RequestException as e: + print(f"请求出错: {e}") + finally: + self.loading = False + + +def main2() -> dict: + import requests + import json + login_url = "http://marketinfo.jbshihua.com/jingbo-api/api/server/login" + + login_data = { + "data": { + "account": "admin", + "password": "OWZlYjcyNDAwZDRkYjEwZjE1ZjA0MTIwNDAwOGI5NjI=", + "tenantHashCode": "8a4577dbd919675758d57999a1e891fe", + "terminal": "PC" + }, + "funcModule": "登录页面", + "funcOperation": "登录" + } + login_res = requests.post( + url=login_url, json=login_data, timeout=(3, 5)) + text = json.loads(login_res.text) + print(text) + if text["status"]: + token = text["data"]["accessToken"] + + return { + "accessToken": token, + } + return { + "accessToken": "", + } + + +# 使用示例 +if __name__ == "__main__": + # auth = AuthHandler() + # auth.loadCaptcha() + + # # 打印获取到的验证码信息 + # print(f"验证码 Token: {auth.loginForm['captchaToken']}") + # print(f"验证码图片: {auth.loginForm['src']}...") # 只显示前50个字符 + # main2() + main()