预警租户id写死T0004

This commit is contained in:
liurui 2024-12-05 15:02:09 +08:00
parent 03abddb68c
commit dabff4b157
7 changed files with 32879 additions and 22630 deletions

View File

@ -198,7 +198,7 @@ warning_data = {
### 开关 ### 开关
is_train = True # 是否训练 is_train = True # 是否训练
is_debug = False # 是否调试 is_debug = False # 是否调试
is_eta = False # 是否使用eta接口 is_eta = True # 是否使用eta接口
is_timefurture = True # 是否使用时间特征 is_timefurture = True # 是否使用时间特征
is_fivemodels = False # 是否使用之前保存的最佳的5个模型 is_fivemodels = False # 是否使用之前保存的最佳的5个模型
is_edbcode = True # 特征使用edbcoding列表中的 is_edbcode = True # 特征使用edbcoding列表中的
@ -226,7 +226,7 @@ db_mysql.connect()
# 数据截取日期 # 数据截取日期
start_year = 2000 # 数据开始年份 start_year = 2000 # 数据开始年份
end_time = '' # 数据截取日期 end_time = '' # 数据截取日期
freq = 'B' # 时间频率,"D": 天 "W": 周"M": 月"Q": 季度"A": 年 "H": 小时 "T": 分钟 "S": 秒 "B": 工作日 freq = 'W' # 时间频率,"D": 天 "W": 周"M": 月"Q": 季度"A": 年 "H": 小时 "T": 分钟 "S": 秒 "B": 工作日
delweekenday = True if freq == 'B' else False # 是否删除周末数据 delweekenday = True if freq == 'B' else False # 是否删除周末数据
is_corr = False # 特征是否参与滞后领先提升相关系数 is_corr = False # 特征是否参与滞后领先提升相关系数
add_kdj = False # 是否添加kdj指标 add_kdj = False # 是否添加kdj指标
@ -235,19 +235,19 @@ if add_kdj and is_edbnamelist:
### 模型参数 ### 模型参数
y = 'Brent连1合约价格' # 原油指标数据的目标变量 Brent连1合约价格 Brent活跃合约 y = 'Brent连1合约价格' # 原油指标数据的目标变量 Brent连1合约价格 Brent活跃合约
# y = '期货结算价(连续):布伦特原油:前一个观测值' # ineoil的目标变量 # y = '期货结算价(连续):布伦特原油:前一个观测值' # ineoil的目标变量
horizon =30 # 预测的步长 horizon =4 # 预测的步长
input_size = 120 # 输入序列长度 input_size = 40 # 输入序列长度
train_steps = 50 if is_debug else 1000 # 训练步数,用来限定epoch次数 train_steps = 50 if is_debug else 1000 # 训练步数,用来限定epoch次数
val_check_steps = 30 # 评估频率 val_check_steps = 30 # 评估频率
early_stop_patience_steps = 5 # 早停的耐心步数 early_stop_patience_steps = 5 # 早停的耐心步数
# --- 交叉验证用的参数 # --- 交叉验证用的参数
test_size = 200 # 测试集大小定义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的特征
rote = 0.06 rote = 0.06 # 绘图上下界阈值
### 文件 ### 文件
data_set = '原油指标数据.xlsx' # 数据集文件 data_set = '原油指标数据.xlsx' # 数据集文件

View File

@ -211,7 +211,7 @@ upload_data = {
### 开关 ### 开关
is_train = True # 是否训练 is_train = True # 是否训练
is_debug = False # 是否调试 is_debug = False # 是否调试
is_eta = False # 是否使用eta接口 is_eta = True # 是否使用eta接口
is_timefurture = True # 是否使用时间特征 is_timefurture = True # 是否使用时间特征
is_fivemodels = False # 是否使用之前保存的最佳的5个模型 is_fivemodels = False # 是否使用之前保存的最佳的5个模型
is_edbcode = False # 特征使用edbcoding列表中的 is_edbcode = False # 特征使用edbcoding列表中的

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

11069
logs/pricepredict.log.3 Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,4 @@
# 读取配置 # 读取配置
from config_jingbo import *
from lib.dataread import * from lib.dataread import *
from lib.tools import SendMail from lib.tools import SendMail
from models.nerulforcastmodels import ex_Model,model_losss,model_losss_juxiting,brent_export_pdf,tansuanli_export_pdf,pp_export_pdf,model_losss_juxiting from models.nerulforcastmodels import ex_Model,model_losss,model_losss_juxiting,brent_export_pdf,tansuanli_export_pdf,pp_export_pdf,model_losss_juxiting
@ -149,7 +148,8 @@ def predict_main():
warning_data_df = warning_data_df.rename(columns={'指标名称': 'INDICATOR_NAME', '指标id': 'INDICATOR_ID', '频度': 'FREQUENCY', '更新周期': 'UPDATE_FREQUENCY', '指标来源': 'DATA_SOURCE', '最后更新时间': 'LAST_UPDATE_DATE', '停更周期': 'UPDATE_SUSPENSION_CYCLE'}) 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 from sqlalchemy import create_engine
engine = create_engine(f'mysql+pymysql://{dbusername}:{password}@{host}:{port}/{dbname}') engine = create_engine(f'mysql+pymysql://{dbusername}:{password}@{host}:{port}/{dbname}')
warning_data_df['WARNING_DATE'] = datetime.date.today().strftime("%Y-%m-%d") warning_data_df['WARNING_DATE'] = datetime.date.today().strftime("%Y-%m-%d %H:%M:%S")
warning_data_df['TENANT_CODE'] = 'T0004'
# 插入数据之前查询表数据然后新增id列 # 插入数据之前查询表数据然后新增id列
existing_data = pd.read_sql(f"SELECT * FROM {table_name}", engine) existing_data = pd.read_sql(f"SELECT * FROM {table_name}", engine)
if not existing_data.empty: if not existing_data.empty:
@ -194,8 +194,7 @@ def predict_main():
logger.info('模型训练完成') logger.info('模型训练完成')
logger.info('训练数据绘图ing') logger.info('训练数据绘图ing')
model_results3 = model_losss(sqlitedb) model_results3 = model_losss_juxiting(sqlitedb)
# model_results3 = model_losss_juxiting(sqlitedb)
logger.info('训练数据绘图end') logger.info('训练数据绘图end')
# 模型报告 # 模型报告

View File

@ -231,7 +231,7 @@ def model_losss(sqlitedb):
# 其他列转为数值类型 # 其他列转为数值类型
df_combined = df_combined.astype({col: 'float32' for col in df_combined.columns if col not in ['cutoff','ds'] }) df_combined = df_combined.astype({col: 'float32' for col in df_combined.columns if col not in ['cutoff','ds'] })
# 使用 groupby 和 transform 结合 lambda 函数来获取每个分组中 cutoff 的最小值,并创建一个新的列来存储这个最大值 # 使用 groupby 和 transform 结合 lambda 函数来获取每个分组中 cutoff 的最小值,并创建一个新的列来存储这个最大值
df_combined['max_cutoff'] = df_combined.groupby('ds')['cutoff'].transform('max') df_combined['max_cutoff'] = df_combined.groupby('ds')['cutoff'].transform('min')
# 然后筛选出那些 cutoff 等于 max_cutoff 的行,这样就得到了每个分组中 cutoff 最大的行,并保留了其他列 # 然后筛选出那些 cutoff 等于 max_cutoff 的行,这样就得到了每个分组中 cutoff 最大的行,并保留了其他列
df_combined = df_combined[df_combined['cutoff'] == df_combined['max_cutoff']] df_combined = df_combined[df_combined['cutoff'] == df_combined['max_cutoff']]
@ -430,7 +430,7 @@ def model_losss(sqlitedb):
# 数据库查询最佳模型名称 # 数据库查询最佳模型名称
# most_model = [sqlitedb.select_data('most_model',columns=['most_common_model'],order_by='ds desc',limit=1).values[0][0]] # most_model = [sqlitedb.select_data('most_model',columns=['most_common_model'],order_by='ds desc',limit=1).values[0][0]]
most_model = modelnames[0:1] most_model = modelnames[0:5]
for model in most_model: for model in most_model:
plt.plot(df_combined3['ds'], df_combined3[model], label=model,marker='o') plt.plot(df_combined3['ds'], df_combined3[model], label=model,marker='o')
# 当前日期画竖虚线 # 当前日期画竖虚线