diff --git a/入模数据/丽水.xlsx b/入模数据/丽水.xlsx index a12ca80..92a5c39 100644 Binary files a/入模数据/丽水.xlsx and b/入模数据/丽水.xlsx differ diff --git a/入模数据/台州.xlsx b/入模数据/台州.xlsx index 2228f0a..916d6c5 100644 Binary files a/入模数据/台州.xlsx and b/入模数据/台州.xlsx differ diff --git a/入模数据/嘉兴.xlsx b/入模数据/嘉兴.xlsx index 1871f1a..c9cb3fe 100644 Binary files a/入模数据/嘉兴.xlsx and b/入模数据/嘉兴.xlsx differ diff --git a/入模数据/宁波.xlsx b/入模数据/宁波.xlsx index f9d2d74..0e42293 100644 Binary files a/入模数据/宁波.xlsx and b/入模数据/宁波.xlsx differ diff --git a/入模数据/杭州.xlsx b/入模数据/杭州.xlsx index 225e8fb..58fc23c 100644 Binary files a/入模数据/杭州.xlsx and b/入模数据/杭州.xlsx differ diff --git a/入模数据/温州.xlsx b/入模数据/温州.xlsx index 221fa89..1d8b688 100644 Binary files a/入模数据/温州.xlsx and b/入模数据/温州.xlsx differ diff --git a/入模数据/湖州.xlsx b/入模数据/湖州.xlsx index 4c123db..ea14b56 100644 Binary files a/入模数据/湖州.xlsx and b/入模数据/湖州.xlsx differ diff --git a/入模数据/绍兴.xlsx b/入模数据/绍兴.xlsx index 389c392..7f8ebbb 100644 Binary files a/入模数据/绍兴.xlsx and b/入模数据/绍兴.xlsx differ diff --git a/入模数据/舟山.xlsx b/入模数据/舟山.xlsx index f202b89..9797ee9 100644 Binary files a/入模数据/舟山.xlsx and b/入模数据/舟山.xlsx differ diff --git a/入模数据/衢州.xlsx b/入模数据/衢州.xlsx index 2851332..d6366db 100644 Binary files a/入模数据/衢州.xlsx and b/入模数据/衢州.xlsx differ diff --git a/入模数据/追加10月数据.py b/入模数据/追加10月数据.py new file mode 100644 index 0000000..9b5ee2a --- /dev/null +++ b/入模数据/追加10月数据.py @@ -0,0 +1,48 @@ +import pandas as pd +import math +import datetime +import chinese_calendar as cc + +df = pd.read_excel(r'C:\Users\鸽子\Desktop\浙江各地市气象数据 .xlsx') +df.columns = df.columns.map(lambda x:x.strip()) +df['dtdate'] = pd.to_datetime(df['dtdate'],format='%Y%m%d').astype('str') +df['city_name'] = df['city_name'].map(lambda x:x.strip()) +df['city_name'] = df['city_name'].str[:-1] +df['dtdate'] = df['dtdate'].map(lambda x:x.strip()) +def holiday_work(x): + if cc.is_workday(x): + return 0 + if cc.is_holiday(x): + return 1 +def jq(y,x): + a=365.242 * (y - 1900) + 6.2 + 15.22 * x - 1.9 * math.sin(0.262 * x) + return datetime.date(1899,12,31)+datetime.timedelta(days=int(a)) +# print(jq(2023,1)) +jq_list=['小寒', '大寒', '立春', '雨水', '惊蛰', '春分', '清明', '谷雨', '立夏', '小满', '芒种', '夏至', '小暑', '大暑', '立秋', '处暑', '白露', '秋分', '寒露', '霜降', '立冬', '小雪', '大雪','冬至'] +jq_dict={} +for j in range(2023,2024): + for i in range(24): + jq_dict[jq(j,i).strftime('%Y-%m-%d')]=jq_list[i] +# print(jq_dict) +df['24ST'] = df['dtdate'].map(jq_dict) +df.fillna(method='ffill',inplace=True) +df['24ST'].fillna('秋分',inplace=True) +df['holiday'] = pd.to_datetime(df['dtdate']).map(holiday_work) +print(df) +jq_dict = {'冬至': 0, '处暑': 1, '夏至': 2, '大寒': 3, '大暑': 4, '大雪': 5, '寒露': 6, '小寒': 7, '小暑': 8, '小满': 9, '小雪': 10, '惊蛰': 11, '春分': 12, '清明': 13, '白露': 14, '秋分': 15, '立冬': 16, '立夏': 17, '立春': 18, '立秋': 19, '芒种': 20, '谷雨': 21, '雨水': 22, '霜降': 23} +df_elec = pd.read_excel(r'C:\Users\鸽子\Desktop\浙江省各地市日电量及分压数据21-23年.xlsx',sheet_name=0) +df_elec.columns = df_elec.columns.map(lambda x:x.strip()) +print(df_elec) +df_elec['stat_date'] = pd.to_datetime(df_elec['stat_date']).astype(str) +df_elec['地市'] = df_elec['地市'].map(lambda x:x.strip()) +df_elec['stat_date'] = df_elec['stat_date'].map(lambda x:x.strip()) +df_final = pd.merge(df,df_elec,left_on=['city_name','dtdate'],right_on=['地市','stat_date'],how='left') +df_final.drop(columns=['stat_date','地市'],inplace=True) +df_final.rename(columns={'power_sal':'售电量'},inplace=True) +df_final['24ST'] = df_final['24ST'].map(jq_dict) +df_final['售电量'] /= 10000 +print(df_final) +df_final = df_final[['dtdate','city_name','tem_max','tem_min','holiday','24ST','售电量']] +for city in df_final['city_name'].drop_duplicates(): + df_city = df_final[df_final['city_name']==city] + df_city.to_excel(fr'C:\Users\鸽子\Desktop\追加\{city} .xlsx',index=False) diff --git a/入模数据/金华.xlsx b/入模数据/金华.xlsx index d5fca37..ac26c14 100644 Binary files a/入模数据/金华.xlsx and b/入模数据/金华.xlsx differ diff --git a/各地级市日电量模型/hangzhou.bin b/各地级市日电量模型/hangzhou.bin index 6620ede..b63515a 100644 Binary files a/各地级市日电量模型/hangzhou.bin and b/各地级市日电量模型/hangzhou.bin differ diff --git a/各地级市日电量模型/huzhou.bin b/各地级市日电量模型/huzhou.bin index 4808621..c37fa7d 100644 Binary files a/各地级市日电量模型/huzhou.bin and b/各地级市日电量模型/huzhou.bin differ diff --git a/各地级市日电量模型/jiaxing.bin b/各地级市日电量模型/jiaxing.bin index 34c2c42..1d2f3b2 100644 Binary files a/各地级市日电量模型/jiaxing.bin and b/各地级市日电量模型/jiaxing.bin differ diff --git a/各地级市日电量模型/jinhua.bin b/各地级市日电量模型/jinhua.bin index 48f2992..9ed8192 100644 Binary files a/各地级市日电量模型/jinhua.bin and b/各地级市日电量模型/jinhua.bin differ diff --git a/各地级市日电量模型/lishui.bin b/各地级市日电量模型/lishui.bin index ae8861c..ab1054e 100644 Binary files a/各地级市日电量模型/lishui.bin and b/各地级市日电量模型/lishui.bin differ diff --git a/各地级市日电量模型/ningbo.bin b/各地级市日电量模型/ningbo.bin index 3f710d4..249ce3f 100644 Binary files a/各地级市日电量模型/ningbo.bin and b/各地级市日电量模型/ningbo.bin differ diff --git a/各地级市日电量模型/quzhou.bin b/各地级市日电量模型/quzhou.bin index a98fc77..1a3d1b4 100644 Binary files a/各地级市日电量模型/quzhou.bin and b/各地级市日电量模型/quzhou.bin differ diff --git a/各地级市日电量模型/shaoxing.bin b/各地级市日电量模型/shaoxing.bin index 85652b7..9f1d451 100644 Binary files a/各地级市日电量模型/shaoxing.bin and b/各地级市日电量模型/shaoxing.bin differ diff --git a/各地级市日电量模型/taizhou.bin b/各地级市日电量模型/taizhou.bin index db74db6..f25a190 100644 Binary files a/各地级市日电量模型/taizhou.bin and b/各地级市日电量模型/taizhou.bin differ diff --git a/各地级市日电量模型/wenzhou.bin b/各地级市日电量模型/wenzhou.bin index df323c8..a23febb 100644 Binary files a/各地级市日电量模型/wenzhou.bin and b/各地级市日电量模型/wenzhou.bin differ diff --git a/各地级市日电量模型/zhoushan.bin b/各地级市日电量模型/zhoushan.bin index e941565..8d569a6 100644 Binary files a/各地级市日电量模型/zhoushan.bin and b/各地级市日电量模型/zhoushan.bin differ diff --git a/各地级市日电量模型/丽水.py b/各地级市日电量模型/丽水.py index d71cee4..33dce7a 100644 --- a/各地级市日电量模型/丽水.py +++ b/各地级市日电量模型/丽水.py @@ -46,14 +46,14 @@ data = data.loc[normal(data['售电量']).index] data['season'] = data.index.map(season) -df_eval = data.loc['2023-9'] +df_eval = data.loc['2023-10'] # df_train = data.loc['2021-1':'2023-8'] -df_train = data[450:900] +df_train = data[450:-1] df_train = df_train[['tem_max','tem_min','holiday','24ST','售电量','season']] -X = df_train[['tem_max','tem_min','holiday','24ST','season']] -X_eval = df_eval[['tem_max','tem_min','holiday','24ST','season']] +X = df_train[['tem_max','tem_min','24ST','holiday','season']] +X_eval = df_eval[['tem_max','tem_min','24ST','holiday','season']] y = df_train['售电量'] # best_goal = 1 # best_i = {} @@ -85,7 +85,7 @@ print(goal2) # with open(r'C:\Users\user\Desktop\9月各地市日电量预测结果\偏差率.txt','a',encoding='utf-8') as f: # f.write(f'丽水月末3天偏差率:{goal},9号-月底偏差率:{goal2}') # # 保存模型 -# model.save_model('lishui.bin') +model.save_model('lishui.bin') import numpy as np loaded_model = xgb.XGBRegressor() loaded_model.load_model('lishui.bin') diff --git a/各地级市日电量模型/台州.py b/各地级市日电量模型/台州.py index 8144b30..75ffc96 100644 --- a/各地级市日电量模型/台州.py +++ b/各地级市日电量模型/台州.py @@ -41,14 +41,14 @@ data = data.loc[normal(data['售电量']).index] data['season'] = data.index.map(season) -df_eval = data.loc['2023-8'] +df_eval = data.loc['2023-10'] -df_train = data[500:850] +df_train = data[500:-1] df_train = df_train[['tem_max','tem_min','holiday','24ST','售电量','season']] -X = df_train[['tem_max','tem_min','holiday','24ST','season']] -X_eval = df_eval[['tem_max','tem_min','holiday','24ST','season']] +X = df_train[['tem_max','tem_min','24ST','holiday','season']] +X_eval = df_eval[['tem_max','tem_min','24ST','holiday','season']] y = df_train['售电量'] # best_goal = 1 # best_i = {} @@ -72,6 +72,7 @@ goal = (result_eval['eval'][-3:].sum()-result_eval['pred'][-3:].sum())/result_ev print(goal) goal2 = (result_eval['eval'][-23:].sum()-result_eval['pred'][-23:].sum())/result_eval['eval'].sum() print(goal2) +print(result_eval) # if abs(goal) < best_goal: # best_goal = abs(goal) # best_i['best_i'] = i diff --git a/各地级市日电量模型/嘉兴.py b/各地级市日电量模型/嘉兴.py index 6936d60..5023762 100644 --- a/各地级市日电量模型/嘉兴.py +++ b/各地级市日电量模型/嘉兴.py @@ -41,8 +41,8 @@ data = data.loc[normal(data['售电量']).index] # print(list0,list1,list2) data['season'] = data.index.map(season) -df_eval = data.loc['2023-08'] -df_train = data.iloc[450:900] +df_eval = data.loc['2023-10'] +df_train = data.iloc[450:-1] # df_train = data.loc['2021-01':'2023-07'] @@ -50,8 +50,8 @@ df_train = data.iloc[450:900] df_train = df_train[['tem_max','tem_min','holiday','24ST','售电量','season']] -X = df_train[['tem_max','tem_min','holiday','24ST','season']] -X_eval = df_eval[['tem_max','tem_min','holiday','24ST','season']] +X = df_train[['tem_max','tem_min','24ST','holiday','season']] +X_eval = df_eval[['tem_max','tem_min','24ST','holiday','season']] y = df_train['售电量'] # best_goal = 1 diff --git a/各地级市日电量模型/宁波.py b/各地级市日电量模型/宁波.py index edd5937..dc29ffc 100644 --- a/各地级市日电量模型/宁波.py +++ b/各地级市日电量模型/宁波.py @@ -40,15 +40,17 @@ data = data.loc[normal(data['售电量']).index] data['season'] = data.index.map(season) -df_eval = data.loc['2023-09'] +df_eval = data.loc['2023-10'] # df_train = data.loc['2021-01':'2023-08'] -df_train = data[450:900] +# df_train = data[450:900] +df_train = data.loc['2022-01':'2023-10'][:-1] + df_train = df_train[['tem_max','tem_min','holiday','24ST','售电量','season']] -X = df_train[['tem_max','tem_min','holiday','24ST','season']] -X_eval = df_eval[['tem_max','tem_min','holiday','24ST','season']] +X = df_train[['tem_max','tem_min','24ST','holiday','season']] +X_eval = df_eval[['tem_max','tem_min','24ST','holiday','season']] y = df_train['售电量'] # best_goal = 1 @@ -72,6 +74,7 @@ print(goal) goal2 = (result_eval['eval'][-23:].sum()-result_eval['pred'][-23:].sum())/result_eval['eval'].sum() print(goal2) +print(result_eval) # if abs(goal) < best_goal : # best_goal = abs(goal) # best_i['best_i'] = i @@ -91,3 +94,5 @@ X_eval = np.array([ [25.8,14.3,23,0,0]]) print(model.predict(X_eval)) + + diff --git a/各地级市日电量模型/杭州.py b/各地级市日电量模型/杭州.py index 11e7371..cb57f7b 100644 --- a/各地级市日电量模型/杭州.py +++ b/各地级市日电量模型/杭州.py @@ -50,10 +50,10 @@ data = data.loc[normal(data['售电量']).index] data['season'] = data.index.map(season) -df_train = data[500:850] +df_train = data[500:-1] # df_train = data.loc['2021-01':'2023-08'] -df_eval = data.loc['2023-9'] +df_eval = data.loc['2023-10'] X = df_train[['tem_max','tem_min','24ST','holiday','season']] X_eval = df_eval[['tem_max','tem_min','24ST','holiday','season']] diff --git a/各地级市日电量模型/温州.py b/各地级市日电量模型/温州.py index 36363a3..0ff0457 100644 --- a/各地级市日电量模型/温州.py +++ b/各地级市日电量模型/温州.py @@ -43,16 +43,16 @@ data = data.loc[normal(data['售电量']).index] data['season'] = data.index.map(season) -df_eval = data.loc['2023-9'] +df_eval = data.loc['2023-10'] # df_train = data.loc['2021-1':'2023-8'] -df_train = data[450:900] +df_train = data[450:-1] df_train = df_train[['tem_max','tem_min','holiday','24ST','售电量','season']] -X = df_train[['tem_max','tem_min','holiday','24ST','season']] -X_eval = df_eval[['tem_max','tem_min','holiday','24ST','season']] +X = df_train[['tem_max','tem_min','24ST','holiday','season']] +X_eval = df_eval[['tem_max','tem_min','24ST','holiday','season']] y = df_train['售电量'] # best_goal = 1 diff --git a/各地级市日电量模型/湖州.py b/各地级市日电量模型/湖州.py index afbc87f..c0baf1c 100644 --- a/各地级市日电量模型/湖州.py +++ b/各地级市日电量模型/湖州.py @@ -44,14 +44,14 @@ data = data.loc[normal(data['售电量']).index] data['season'] = data.index.map(season) -df_eval = data.loc['2023-9'] +df_eval = data.loc['2023-10'] # df_train = data.loc['2022-6':'2023-8'] -df_train = data[450:900] +df_train = data[450:-1] df_train = df_train[['tem_max','tem_min','holiday','24ST','售电量','season']] -X = df_train[['tem_max','tem_min','holiday','24ST','season']] -X_eval = df_eval[['tem_max','tem_min','holiday','24ST','season']] +X = df_train[['tem_max','tem_min','24ST','holiday','season']] +X_eval = df_eval[['tem_max','tem_min','24ST','holiday','season']] y = df_train['售电量'] x_train,x_test,y_train,y_test = train_test_split(X,y,test_size=0.1,random_state=158) @@ -72,7 +72,7 @@ goal = (result_eval['eval'][-3:].sum()-result_eval['pred'][-3:].sum())/result_ev print(goal) goal2 = (result_eval['eval'][-23:].sum()-result_eval['pred'][-23:].sum())/result_eval['eval'].sum() print(goal2) - +print(result_eval) # 保存模型 # model.save_model('huzhou.bin') loaded_model = xgb.XGBRegressor() @@ -80,6 +80,7 @@ loaded_model.load_model('huzhou.bin') import numpy as np X_eval = np.array([[23.89,15.5,23,1,0], [24.5,13.30,23,0,0], - [25.39,13.5,23,0,0]]) + [25.39,13.5,23,0,0] + ]) print(model.predict(X_eval)) diff --git a/各地级市日电量模型/绍兴.py b/各地级市日电量模型/绍兴.py index 717a07b..204b9d5 100644 --- a/各地级市日电量模型/绍兴.py +++ b/各地级市日电量模型/绍兴.py @@ -42,9 +42,9 @@ data = data.loc[normal(data['售电量']).index] # print(list0,list1,list2) data['season'] = data.index.map(season) -df_eval = data.loc['2023-9'] +df_eval = data.loc['2023-10'] # df_train = data.loc['2021-1':'2023-8'] -df_train = data[450:900] +df_train = data[450:-1] print(len(df_eval),len(df_train),len(data)) @@ -52,8 +52,8 @@ df_train = df_train[['tem_max','tem_min','holiday','24ST','售电量','season']] -X = df_train[['tem_max','tem_min','holiday','24ST','season']] -X_eval = df_eval[['tem_max','tem_min','holiday','24ST','season']] +X = df_train[['tem_max','tem_min','24ST','holiday','season']] +X_eval = df_eval[['tem_max','tem_min','24ST','holiday','season']] y = df_train['售电量'] # best_goal = 1 @@ -84,7 +84,7 @@ print(goal2) # best_i['best_i'] = i # x = goal2 # print(best_i,best_goal,x) - +print(result_eval) # 保存模型 # model.save_model('shaoxing.bin') loaded_model = xgb.XGBRegressor() diff --git a/各地级市日电量模型/舟山.py b/各地级市日电量模型/舟山.py index da636ce..8a20d02 100644 --- a/各地级市日电量模型/舟山.py +++ b/各地级市日电量模型/舟山.py @@ -41,13 +41,13 @@ data = data.loc[normal(data['售电量']).index] # print(list0,list1,list2) data['season'] = data.index.map(season) -df_eval = data.loc['2023-9'] +df_eval = data.loc['2023-10'] # df_train = data.loc['2021-1':'2023-8'] -df_train = data.iloc[450:900] +df_train = data.iloc[450:-1] df_train = df_train[['tem_max','tem_min','holiday','24ST','售电量','season']] -X = df_train[['tem_max','tem_min','holiday','24ST','season']] -X_eval = df_eval[['tem_max','tem_min','holiday','24ST','season']] +X = df_train[['tem_max','tem_min','24ST','holiday','season']] +X_eval = df_eval[['tem_max','tem_min','24ST','holiday','season']] y = df_train['售电量'] x_train,x_test,y_train,y_test = train_test_split(X,y,test_size=0.1,random_state=42) @@ -70,9 +70,9 @@ print(goal) goal2 = (result_eval['eval'][-23:].sum()-result_eval['pred'][-23:].sum())/result_eval['eval'].sum() print(goal2) +print(result_eval) - -# model.save_model('zhoushan.bin') +model.save_model('zhoushan.bin') loaded_model = xgb.XGBRegressor() loaded_model.load_model('zhoushan.bin') import numpy as np diff --git a/各地级市日电量模型/衢州.py b/各地级市日电量模型/衢州.py index f55fa17..d79eb16 100644 --- a/各地级市日电量模型/衢州.py +++ b/各地级市日电量模型/衢州.py @@ -41,14 +41,14 @@ data = data.loc[normal(data['售电量']).index] data['season'] = data.index.map(season) -df_eval = data.loc['2023-08'] -df_train = data.iloc[450:900] +df_eval = data.loc['2023-10'] +df_train = data.iloc[450:-1] df_train = df_train[['tem_max','tem_min','holiday','24ST','售电量','season']] -X = df_train[['tem_max','tem_min','holiday','24ST','season']] -X_eval = df_eval[['tem_max','tem_min','holiday','24ST','season']] +X = df_train[['tem_max','tem_min','24ST','holiday','season']] +X_eval = df_eval[['tem_max','tem_min','24ST','holiday','season']] y = df_train['售电量'] x_train,x_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=42) @@ -66,7 +66,7 @@ print(goal) goal2 = (result_eval['eval'][-23:].sum()-result_eval['pred'][-23:].sum())/result_eval['eval'].sum() print(goal2) - +print(result_eval) # 保存模型 # model.save_model('quzhou.bin') loaded_model = xgb.XGBRegressor() diff --git a/各地级市日电量模型/金华.py b/各地级市日电量模型/金华.py index 7815abf..6ebc109 100644 --- a/各地级市日电量模型/金华.py +++ b/各地级市日电量模型/金华.py @@ -41,15 +41,14 @@ data = data.loc[normal(data['售电量']).index] # print(list0,list1,list2) data['season'] = data.index.map(season) - -df_eval = data.loc['2023-09'] -# df_train = data.loc['2021-01':'2023-08'] -df_train = data.iloc[450:900] +df_eval = data.loc['2023-10'] +# df_train = data.loc['2021-01':'2023-10'][:-3] +df_train = data.iloc[450:-1] df_train = df_train[['tem_max','tem_min','holiday','24ST','售电量','season']] -X = df_train[['tem_max','tem_min','holiday','24ST','season']] -X_eval = df_eval[['tem_max','tem_min','holiday','24ST','season']] +X = df_train[['tem_max','tem_min','24ST','holiday','season']] +X_eval = df_eval[['tem_max','tem_min','24ST','holiday','season']] y = df_train['售电量'] # best_goal = 1 @@ -74,6 +73,8 @@ print(goal) goal2 = (result_eval['eval'][-23:].sum()-result_eval['pred'][-23:].sum())/result_eval['eval'].sum() print(goal2) +print(result_eval) + # if abs(goal) < best_goal : # best_goal = abs(goal) # best_i['best_i'] = i diff --git a/浙江行业电量/行业电量_输出为5.py b/浙江行业电量/行业电量_输出为5.py index fcd2908..cbb48c4 100644 --- a/浙江行业电量/行业电量_输出为5.py +++ b/浙江行业电量/行业电量_输出为5.py @@ -2,8 +2,6 @@ import numpy as np import pandas as pd import torch from torch import nn -from multiprocessing import Pool -import matplotlib.pyplot as plt import os os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE" DAYS_FOR_TRAIN = 10 @@ -54,80 +52,79 @@ def data_preprocessing(data): return data # 拼接数据集 -# file_dir = r'C:\Users\user\Desktop\浙江各地市行业电量数据' -# excel = os.listdir(file_dir)[0] -# data = pd.read_excel(os.path.join(file_dir, excel), sheet_name=0, index_col='stat_date') -# data.drop(columns='地市',inplace=True) -# data = data_preprocessing(data) -# -# df = data[data.columns[0]] -# df.dropna(inplace = True) -# dataset_x, dataset_y = create_dataset(df, DAYS_FOR_TRAIN) -# -# for level in data.columns[1:]: -# df = data[level] -# df.dropna(inplace=True) -# x, y = create_dataset(df, DAYS_FOR_TRAIN) -# dataset_x = np.concatenate((dataset_x, x)) -# dataset_y = np.concatenate((dataset_y, y)) -# -# -# for excel in os.listdir(file_dir)[1:]: -# -# data = pd.read_excel(os.path.join(file_dir,excel), sheet_name=0,index_col='stat_date') -# data.drop(columns='地市', inplace=True) -# data = data_preprocessing(data) -# -# for level in data.columns: -# df = data[level] -# df.dropna(inplace=True) -# x,y = create_dataset(df,DAYS_FOR_TRAIN) -# dataset_x = np.concatenate((dataset_x,x)) -# dataset_y = np.concatenate((dataset_y,y)) -# -# -# print(dataset_x.shape,dataset_y.shape) +file_dir = r'C:\Users\user\Desktop\浙江各地市行业电量数据' +excel = os.listdir(file_dir)[0] +data = pd.read_excel(os.path.join(file_dir, excel), sheet_name=0, index_col='stat_date') +data.drop(columns='地市',inplace=True) +data = data_preprocessing(data) + +df = data[data.columns[0]] +df.dropna(inplace = True) +dataset_x, dataset_y = create_dataset(df, DAYS_FOR_TRAIN) + +for level in data.columns[1:]: + df = data[level] + df.dropna(inplace=True) + x, y = create_dataset(df, DAYS_FOR_TRAIN) + dataset_x = np.concatenate((dataset_x, x)) + dataset_y = np.concatenate((dataset_y, y)) + + +for excel in os.listdir(file_dir)[1:]: + + data = pd.read_excel(os.path.join(file_dir,excel), sheet_name=0,index_col='stat_date') + data.drop(columns='地市', inplace=True) + data = data_preprocessing(data) + + for level in data.columns: + df = data[level] + df.dropna(inplace=True) + x,y = create_dataset(df,DAYS_FOR_TRAIN) + dataset_x = np.concatenate((dataset_x,x)) + dataset_y = np.concatenate((dataset_y,y)) + + +print(dataset_x.shape,dataset_y.shape) # # 训练 device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') # # # 标准化到0~1 -# max_value = np.max(dataset_x) -# min_value = np.min(dataset_x) -# dataset_x = (dataset_x - min_value) / (max_value - min_value) -# dataset_y = (dataset_y - min_value) / (max_value - min_value) -# print('max_value:',max_value,'min_value:',min_value) -# # 划分训练集和测试集 -# train_size = int(len(dataset_x)*0.7) -# train_x = dataset_x[:train_size] -# train_y = dataset_y[:train_size] -# +max_value = np.max(dataset_x) +min_value = np.min(dataset_x) +dataset_x = (dataset_x - min_value) / (max_value - min_value) +dataset_y = (dataset_y - min_value) / (max_value - min_value) +print('max_value:',max_value,'min_value:',min_value) +# 划分训练集和测试集 +train_size = int(len(dataset_x)*0.7) +train_x = dataset_x[:train_size] +train_y = dataset_y[:train_size] + # # 将数据改变形状,RNN 读入的数据维度是 (seq_size, batch_size, feature_size) -# train_x = train_x.reshape(-1, 1, DAYS_FOR_TRAIN) -# train_y = train_y.reshape(-1, 1, 5) -# +train_x = train_x.reshape(-1, 1, DAYS_FOR_TRAIN) +train_y = train_y.reshape(-1, 1, 5) + # # 转为pytorch的tensor对象 -# train_x = torch.from_numpy(train_x).to(device).type(torch.float32) -# train_y = torch.from_numpy(train_y).to(device).type(torch.float32) -# +train_x = torch.from_numpy(train_x).to(device).type(torch.float32) +train_y = torch.from_numpy(train_y).to(device).type(torch.float32) + model = LSTM_Regression(DAYS_FOR_TRAIN, 32, output_size=5, num_layers=2).to(device) # 导入模型并设置模型的参数输入输出层、隐藏层等 -# -# -# # train_loss = [] -# # loss_function = nn.MSELoss() -# # optimizer = torch.optim.Adam(model.parameters(), lr=0.005, betas=(0.9, 0.999), eps=1e-08, weight_decay=0) -# # for i in range(1500): -# # out = model(train_x) -# # loss = loss_function(out, train_y) -# # loss.backward() -# # optimizer.step() -# # optimizer.zero_grad() -# # train_loss.append(loss.item()) -# # if i % 100 == 0: -# # print(f'epoch {i+1}: loss:{loss}') -# -# # 保存/读取模型 -# # torch.save(model.state_dict(),'hy5.pth') -# + +train_loss = [] +loss_function = nn.MSELoss() +optimizer = torch.optim.Adam(model.parameters(), lr=0.005, betas=(0.9, 0.999), eps=1e-08, weight_decay=0) +for i in range(1500): + out = model(train_x) + loss = loss_function(out, train_y) + loss.backward() + optimizer.step() + optimizer.zero_grad() + train_loss.append(loss.item()) + if i % 100 == 0: + print(f'epoch {i+1}: loss:{loss}') + +# 保存/读取模型 +torch.save(model.state_dict(),'hy5.pth') + # model.load_state_dict(torch.load('hy5.pth')) # # for test # model = model.eval() # 转换成测试模式