原油周度调试上传预测值到市场信息平台
This commit is contained in:
parent
843d1e5b4b
commit
709e2ff3dd
@ -39,7 +39,6 @@ edbnamelist = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# eta自有数据指标编码
|
# eta自有数据指标编码
|
||||||
modelsindex = {
|
modelsindex = {
|
||||||
'NHITS': 'SELF0000001',
|
'NHITS': 'SELF0000001',
|
||||||
@ -90,15 +89,18 @@ data = {
|
|||||||
ClassifyId = 1214
|
ClassifyId = 1214
|
||||||
|
|
||||||
|
|
||||||
|
# 变量定义--测试环境
|
||||||
############################################################################################################### 变量定义--测试环境
|
|
||||||
server_host = '192.168.100.53'
|
server_host = '192.168.100.53'
|
||||||
|
|
||||||
login_pushreport_url = f"http://{server_host}:8080/jingbo-dev/api/server/login"
|
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" # 停更预警
|
upload_url = f"http://{server_host}:8080/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave"
|
||||||
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" # 上传数据项值
|
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"
|
||||||
|
|
||||||
login_data = {
|
login_data = {
|
||||||
"data": {
|
"data": {
|
||||||
@ -176,6 +178,12 @@ push_data_value_list_data = {
|
|||||||
bdwd_items = {
|
bdwd_items = {
|
||||||
'ciri': 'yyycbdwdcr',
|
'ciri': 'yyycbdwdcr',
|
||||||
'benzhou': 'yyycbdwdbz',
|
'benzhou': 'yyycbdwdbz',
|
||||||
|
'cizhou': 'yyycbdwdcz',
|
||||||
|
'gezhou': 'yyycbdwdgz',
|
||||||
|
'ciyue': 'yyycbdwdcy',
|
||||||
|
'cieryue': 'yyycbdwdcey',
|
||||||
|
'cisanyue': 'yyycbdwdcsy',
|
||||||
|
'cisiyue': 'yyycbdwdcsiy',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -188,7 +196,7 @@ dbname = 'jingbo_test'
|
|||||||
table_name = 'v_tbl_crude_oil_warning'
|
table_name = 'v_tbl_crude_oil_warning'
|
||||||
|
|
||||||
|
|
||||||
### 开关
|
# 开关
|
||||||
is_train = False # 是否训练
|
is_train = False # 是否训练
|
||||||
is_debug = True # 是否调试
|
is_debug = True # 是否调试
|
||||||
is_eta = True # 是否使用eta接口
|
is_eta = True # 是否使用eta接口
|
||||||
@ -205,9 +213,9 @@ is_del_corr = 0.6 # 是否删除相关性高的特征,取值为 0-1 ,0 为不
|
|||||||
is_del_tow_month = True # 是否删除两个月不更新的特征
|
is_del_tow_month = True # 是否删除两个月不更新的特征
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 连接到数据库
|
# 连接到数据库
|
||||||
db_mysql = MySQLDB(host=host, user=dbusername, password=password, database=dbname)
|
db_mysql = MySQLDB(host=host, user=dbusername,
|
||||||
|
password=password, database=dbname)
|
||||||
db_mysql.connect()
|
db_mysql.connect()
|
||||||
print("数据库连接成功", host, dbname, dbusername)
|
print("数据库连接成功", host, dbname, dbusername)
|
||||||
|
|
||||||
@ -222,7 +230,7 @@ add_kdj = False # 是否添加kdj指标
|
|||||||
if add_kdj and is_edbnamelist:
|
if add_kdj and is_edbnamelist:
|
||||||
edbnamelist = edbnamelist+['K', 'D', 'J']
|
edbnamelist = edbnamelist+['K', 'D', 'J']
|
||||||
|
|
||||||
### 模型参数
|
# 模型参数
|
||||||
y = 'Brent连1合约价格' # 原油指标数据的目标变量 Brent连1合约价格 Brent活跃合约
|
y = 'Brent连1合约价格' # 原油指标数据的目标变量 Brent连1合约价格 Brent活跃合约
|
||||||
# y = 'Brent连1合约价格' # 原油指标数据的目标变量 Brent连1合约价格 Brent活跃合约
|
# y = 'Brent连1合约价格' # 原油指标数据的目标变量 Brent连1合约价格 Brent活跃合约
|
||||||
horizon = 5 # 预测的步长
|
horizon = 5 # 预测的步长
|
||||||
@ -234,16 +242,16 @@ early_stop_patience_steps = 5 # 早停的耐心步数
|
|||||||
test_size = 100 # 测试集大小,定义100,后面使用的时候重新赋值
|
test_size = 100 # 测试集大小,定义100,后面使用的时候重新赋值
|
||||||
val_size = test_size # 验证集大小,同测试集大小
|
val_size = test_size # 验证集大小,同测试集大小
|
||||||
|
|
||||||
### 特征筛选用到的参数
|
# 特征筛选用到的参数
|
||||||
k = 100 # 特征筛选数量,如果是0或者值比特征数量大,代表全部特征
|
k = 100 # 特征筛选数量,如果是0或者值比特征数量大,代表全部特征
|
||||||
corr_threshold = 0.6 # 相关性大于0.6的特征
|
corr_threshold = 0.6 # 相关性大于0.6的特征
|
||||||
rote = 0.06 # 绘图上下界阈值
|
rote = 0.06 # 绘图上下界阈值
|
||||||
|
|
||||||
### 计算准确率
|
# 计算准确率
|
||||||
weight_dict = [0.4, 0.15, 0.1, 0.1, 0.25] # 权重
|
weight_dict = [0.4, 0.15, 0.1, 0.1, 0.25] # 权重
|
||||||
|
|
||||||
|
|
||||||
### 文件
|
# 文件
|
||||||
data_set = '原油指标数据.xlsx' # 数据集文件
|
data_set = '原油指标数据.xlsx' # 数据集文件
|
||||||
dataset = 'yuanyoudataset' # 数据集文件夹
|
dataset = 'yuanyoudataset' # 数据集文件夹
|
||||||
|
|
||||||
@ -260,7 +268,7 @@ reportname = f'Brent原油大模型预测--{end_time}.pdf' # 报告文件名
|
|||||||
reportname = reportname.replace(':', '-') # 替换冒号
|
reportname = reportname.replace(':', '-') # 替换冒号
|
||||||
if end_time == '':
|
if end_time == '':
|
||||||
end_time = now
|
end_time = now
|
||||||
### 邮件配置
|
# 邮件配置
|
||||||
username = '1321340118@qq.com'
|
username = '1321340118@qq.com'
|
||||||
passwd = 'wgczgyhtyyyyjghi'
|
passwd = 'wgczgyhtyyyyjghi'
|
||||||
# recv=['liurui_test@163.com','52585119@qq.com']
|
# recv=['liurui_test@163.com','52585119@qq.com']
|
||||||
@ -273,7 +281,7 @@ file=os.path.join(dataset,'reportname')
|
|||||||
ssl = True
|
ssl = True
|
||||||
|
|
||||||
|
|
||||||
### 日志配置
|
# 日志配置
|
||||||
|
|
||||||
# 创建日志目录(如果不存在)
|
# 创建日志目录(如果不存在)
|
||||||
log_dir = 'logs'
|
log_dir = 'logs'
|
||||||
@ -285,8 +293,10 @@ logger = logging.getLogger('my_logger')
|
|||||||
logger.setLevel(logging.INFO)
|
logger.setLevel(logging.INFO)
|
||||||
|
|
||||||
# 配置文件处理器,将日志记录到文件
|
# 配置文件处理器,将日志记录到文件
|
||||||
file_handler = logging.handlers.RotatingFileHandler(os.path.join(log_dir, 'pricepredict.log'), maxBytes=1024 * 1024, backupCount=5)
|
file_handler = logging.handlers.RotatingFileHandler(os.path.join(
|
||||||
file_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
|
log_dir, 'pricepredict.log'), maxBytes=1024 * 1024, backupCount=5)
|
||||||
|
file_handler.setFormatter(logging.Formatter(
|
||||||
|
'%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
|
||||||
|
|
||||||
# 配置控制台处理器,将日志打印到控制台
|
# 配置控制台处理器,将日志打印到控制台
|
||||||
console_handler = logging.StreamHandler()
|
console_handler = logging.StreamHandler()
|
||||||
@ -297,4 +307,3 @@ logger.addHandler(file_handler)
|
|||||||
logger.addHandler(console_handler)
|
logger.addHandler(console_handler)
|
||||||
|
|
||||||
# logger.info('当前配置:'+settings)
|
# logger.info('当前配置:'+settings)
|
||||||
|
|
||||||
|
@ -96,6 +96,8 @@ 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_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"
|
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"
|
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"
|
||||||
|
|
||||||
login_data = {
|
login_data = {
|
||||||
"data": {
|
"data": {
|
||||||
@ -146,6 +148,39 @@ query_data_list_item_nos_data = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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'
|
host = '192.168.101.27'
|
||||||
@ -168,6 +203,7 @@ is_edbnamelist = False # 自定义特征,对应上面的edbnamelist
|
|||||||
is_update_eta = False # 预测结果上传到eta
|
is_update_eta = False # 预测结果上传到eta
|
||||||
is_update_report = False # 是否上传报告
|
is_update_report = False # 是否上传报告
|
||||||
is_update_warning_data = False # 是否上传预警数据
|
is_update_warning_data = False # 是否上传预警数据
|
||||||
|
is_update_predict_value = True # 是否上传预测值到市场信息平台
|
||||||
is_del_corr = 0.6 # 是否删除相关性高的特征,取值为 0-1 ,0 为不删除,0.6 表示删除相关性小于0.6的特征
|
is_del_corr = 0.6 # 是否删除相关性高的特征,取值为 0-1 ,0 为不删除,0.6 表示删除相关性小于0.6的特征
|
||||||
is_del_tow_month = True # 是否删除两个月不更新的特征
|
is_del_tow_month = True # 是否删除两个月不更新的特征
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@ global_config.update({
|
|||||||
'test_size': test_size,
|
'test_size': test_size,
|
||||||
'modelsindex': modelsindex,
|
'modelsindex': modelsindex,
|
||||||
'rote': rote,
|
'rote': rote,
|
||||||
|
'bdwd_items': bdwd_items,
|
||||||
|
|
||||||
# 特征工程开关
|
# 特征工程开关
|
||||||
'is_del_corr': is_del_corr,
|
'is_del_corr': is_del_corr,
|
||||||
@ -36,6 +37,7 @@ global_config.update({
|
|||||||
'is_eta': is_eta,
|
'is_eta': is_eta,
|
||||||
'is_update_eta': is_update_eta,
|
'is_update_eta': is_update_eta,
|
||||||
'is_fivemodels': is_fivemodels,
|
'is_fivemodels': is_fivemodels,
|
||||||
|
'is_update_predict_value': is_update_predict_value,
|
||||||
'early_stop_patience_steps': early_stop_patience_steps,
|
'early_stop_patience_steps': early_stop_patience_steps,
|
||||||
|
|
||||||
# 时间参数
|
# 时间参数
|
||||||
@ -54,6 +56,10 @@ global_config.update({
|
|||||||
'query_data_list_item_nos_url': query_data_list_item_nos_url,
|
'query_data_list_item_nos_url': query_data_list_item_nos_url,
|
||||||
'query_data_list_item_nos_data': query_data_list_item_nos_data,
|
'query_data_list_item_nos_data': query_data_list_item_nos_data,
|
||||||
|
|
||||||
|
# 上传数据项
|
||||||
|
'push_data_value_list_url': push_data_value_list_url,
|
||||||
|
'push_data_value_list_data': push_data_value_list_data,
|
||||||
|
|
||||||
# eta 配置
|
# eta 配置
|
||||||
'APPID': APPID,
|
'APPID': APPID,
|
||||||
'SECRET': SECRET,
|
'SECRET': SECRET,
|
||||||
@ -65,12 +71,67 @@ global_config.update({
|
|||||||
'edbdatapushurl': edbdatapushurl,
|
'edbdatapushurl': edbdatapushurl,
|
||||||
'edbdeleteurl': edbdeleteurl,
|
'edbdeleteurl': edbdeleteurl,
|
||||||
'edbbusinessurl': edbbusinessurl,
|
'edbbusinessurl': edbbusinessurl,
|
||||||
|
'ClassifyId': ClassifyId,
|
||||||
'classifylisturl': classifylisturl,
|
'classifylisturl': classifylisturl,
|
||||||
|
|
||||||
# 数据库配置
|
# 数据库配置
|
||||||
'sqlitedb': sqlitedb,
|
'sqlitedb': sqlitedb,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
def push_market_value():
|
||||||
|
logger.info('发送预测结果到市场信息平台')
|
||||||
|
# 读取预测数据和模型评估数据
|
||||||
|
predict_file_path = os.path.join(config.dataset, 'predict.csv')
|
||||||
|
model_eval_file_path = os.path.join(config.dataset, 'model_evaluation.csv')
|
||||||
|
try:
|
||||||
|
predictdata_df = pd.read_csv(predict_file_path)
|
||||||
|
top_models_df = pd.read_csv(model_eval_file_path)
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
logger.error(f"文件未找到: {e}")
|
||||||
|
return
|
||||||
|
|
||||||
|
predictdata = predictdata_df.copy()
|
||||||
|
|
||||||
|
# 取模型前十
|
||||||
|
top_models = top_models_df['模型(Model)'].head(10).tolist()
|
||||||
|
|
||||||
|
# 计算前十模型的均值
|
||||||
|
predictdata_df['top_models_mean'] = predictdata_df[top_models].mean(axis=1)
|
||||||
|
|
||||||
|
# 打印日期和前十模型均值
|
||||||
|
print(predictdata_df[['ds', 'top_models_mean']])
|
||||||
|
|
||||||
|
# 准备要推送的数据
|
||||||
|
first_date = predictdata_df['ds'].iloc[0].replace('-', '')
|
||||||
|
last_date = predictdata_df['ds'].iloc[-1].replace('-', '')
|
||||||
|
first_mean = predictdata_df['top_models_mean'].iloc[0]
|
||||||
|
last_mean = predictdata_df['top_models_mean'].iloc[-1]
|
||||||
|
|
||||||
|
predictdata = [
|
||||||
|
{
|
||||||
|
"dataItemNo": global_config['bdwd_items']['cizhou'],
|
||||||
|
"dataDate": first_date,
|
||||||
|
"dataStatus": "add",
|
||||||
|
"dataValue": first_mean
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dataItemNo": global_config['bdwd_items']['gezhou'],
|
||||||
|
"dataDate": last_date,
|
||||||
|
"dataStatus": "add",
|
||||||
|
"dataValue": last_mean
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
print(predictdata)
|
||||||
|
|
||||||
|
# 推送数据到市场信息平台
|
||||||
|
try:
|
||||||
|
push_market_data(predictdata)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"推送数据失败: {e}")
|
||||||
|
|
||||||
|
|
||||||
def predict_main():
|
def predict_main():
|
||||||
"""
|
"""
|
||||||
主预测函数,用于从 ETA 获取数据、处理数据、训练模型并进行预测。
|
主预测函数,用于从 ETA 获取数据、处理数据、训练模型并进行预测。
|
||||||
|
Loading…
Reference in New Issue
Block a user