PriceForecast/config_tansuanli.py

107 lines
4.4 KiB
Python
Raw Normal View History

2024-11-01 16:38:21 +08:00
import logging
import os
import logging.handlers
# eta 接口token
APPID = "XNLDvxZHHugj7wJ7"
SECRET = "iSeU4s6cKKBVbt94htVY1p0sqUMqb2xa"
# eta 接口url
sourcelisturl = 'http://10.189.2.78:8108/v1/edb/source/list'
classifylisturl = 'http://10.189.2.78:8108/v1/edb/classify/list?ClassifyType='
uniquecodedataurl = 'http://10.189.2.78:8108/v1/edb/data?UniqueCode=4991c37becba464609b409909fe4d992&StartDate=2024-02-01'
classifyidlisturl = 'http://10.189.2.78:8108/v1/edb/list?ClassifyId='
edbcodedataurl = 'http://10.189.2.78:8108/v1/edb/data?EdbCode='
edbcodelist = ['CO1 Comdty', 'ovx index', 'C2404194834', 'C2404199738', 'dxy curncy', 'C2403128043', 'C2403150124',
'DOESCRUD Index', 'WTRBM1 EEGC Index', 'FVHCM1 INDEX', 'doedtprd index', 'CFFDQMMN INDEX',
'C2403083739', 'C2404167878', 'C2403250571', 'ovx index', 'lmcads03 lme comdty', 'GC1 COMB Comdty',
'C2404171822']
# 临时写死用指定的列,与上面的edbcode对应后面更改
edbnamelist = [
'ds','y',
'Brent c1-c6','Brent c1-c3','Brent-WTI','美国商业原油库存',
'DFL','美国汽油裂解价差','ovx index','dxy curncy','lmcads03 lme comdty',
'C2403128043','C2403150124','FVHCM1 INDEX','doedtprd index','CFFDQMMN INDEX',
'C2403083739','C2404167878',
# 'ovx index',
'GC1 COMB Comdty'
]
# eta 分类
# level3才可以获取到数据所以需要人工把能源化工下所有的level3级都找到
# url = 'http://10.189.2.78:8108/v1/edb/list?ClassifyId=1214'
#ParentId ":1160, 能源化工
# ClassifyId ":1214,原油
#ParentId ":1214,",就是原油下所有的数据。
ClassifyId = 1214
### 开关
is_train = True # 是否训练
is_debug = True # 是否调试
is_eta = False # 是否使用eta接口
is_timefurture = False # 是否使用时间特征
is_fivemodels = False # 是否使用之前保存的最佳的5个模型
is_edbcode = False # 特征使用edbcoding列表中的
is_edbnamelist = False # 启用指定的edbname,影响特征选择,只有数据集 原油时 才考虑启用
# 数据截取日期
end_time = '2024-07-30' # 数据截取日期
delweekenday = True # 是否删除周末数据
### 模型参数
y = '电碳价格' # 原油指标数据的目标变量
horizon =5 # 预测的步长
input_size = 10 # 输入序列长度
train_steps = 10 if is_debug else 1000 # 训练步数,用来限定epoch次数
val_check_steps = 30 # 评估频率
early_stop_patience_steps = 5 # 早停的耐心步数
### --- 交叉验证用的参数
test_size = 100 # 测试集大小定义100后面使用的时候重新赋值
val_size = test_size # 验证集大小,同测试集大小
### --- 特征筛选用到的参数
k = 100 # 特征筛选数量如果是0或者值比特征数量大代表全部特征
### --- 文件
data_set = '碳酸锂合并数据.csv' # 数据集文件
### --- 文件夹
dataset = 'dataset' # 数据集文件夹
settings = f'{input_size}-{horizon}-{train_steps}--{k}-{data_set}-{y}'
import datetime
now = datetime.datetime.now().strftime('%Y%m%d%H%M%S') # 获取当前日期时间
reportname = f'{settings}--{now}-预测报告.pdf' # 报告文件名
reportname = reportname.replace(':', '-') # 替换冒号
### 邮件配置
username='1321340118@qq.com'
passwd='wgczgyhtyyyyjghi'
# recv=['liurui_test@163.com','52585119@qq.com']
recv=['liurui_test@163.com']
title='reportname'
content='brent价格预测报告请看附件'
file=os.path.join(dataset,'reportname')
# file=os.path.join(dataset,'14-7-50--100-原油指标数据.xlsx-Brent连1合约价格--20240731175936-预测报告.pdf')
ssl=True
### --- 日志配置
# 创建日志目录(如果不存在)
log_dir = 'logs'
if not os.path.exists(log_dir):
os.makedirs(log_dir)
# 配置日志记录器
logger = logging.getLogger('my_logger')
logger.setLevel(logging.INFO)
# 配置文件处理器,将日志记录到文件
file_handler = logging.handlers.RotatingFileHandler(os.path.join(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.setFormatter(logging.Formatter('%(message)s'))
# 将处理器添加到日志记录器
logger.addHandler(file_handler)
logger.addHandler(console_handler)
logger.info('当前配置:'+settings)