输出预测结果

main
鸽子 1 year ago
parent 6be679912b
commit a810f88dad

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="pytorch_gpu" project-jdk-type="Python SDK" />
<component name="ProjectRootManager" version="2" project-jdk-name="C:\anaconda\envs\pytorch" project-jdk-type="Python SDK" />
</project>

@ -2,7 +2,7 @@
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="jdk" jdkName="pytorch_gpu" jdkType="Python SDK" />
<orderEntry type="jdk" jdkName="C:\anaconda\envs\pytorch" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

Binary file not shown.

@ -5,8 +5,10 @@ from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams['font.sans-serif']=['kaiti']
pd.set_option('display.width',None)
mpl.rcParams['font.sans-serif'] = ['kaiti']
pd.set_option('display.width', None)
def season(x):
if str(x)[5:7] in ('01', '10', '11'):
@ -15,16 +17,17 @@ def season(x):
return 1
else:
return 2
def normal(nd):
high = nd.describe()['75%'] + 1.5*(nd.describe()['75%']-nd.describe()['25%'])
low = nd.describe()['25%'] - 1.5*(nd.describe()['75%']-nd.describe()['25%'])
return nd[(nd<high)&(nd>low)]
def normal(nd):
high = nd.describe()['75%'] + 1.5 * (nd.describe()['75%'] - nd.describe()['25%'])
low = nd.describe()['25%'] - 1.5 * (nd.describe()['75%'] - nd.describe()['25%'])
return nd[(nd < high) & (nd > low)]
parent_dir = os.path.abspath(os.path.join(os.getcwd(),os.pardir))
data = pd.read_excel(os.path.join(parent_dir,'入模数据/丽水.xlsx'),index_col='dtdate')
data.index = pd.to_datetime(data.index,format='%Y-%m-%d')
parent_dir = os.path.abspath(os.path.join(os.getcwd(), os.pardir))
data = pd.read_excel(os.path.join(parent_dir, '入模数据/丽水.xlsx'), index_col='dtdate')
data.index = pd.to_datetime(data.index, format='%Y-%m-%d')
data = data.loc[normal(data['售电量']).index]
# list2 = []
@ -42,56 +45,50 @@ data = data.loc[normal(data['售电量']).index]
# print(list0,list1,list2)
data['season'] = data.index.map(season)
df_eval = data.loc['2023-10']
# df_train = data.loc['2021-1':'2023-8']
df_train = data[450:-1]
# df_train = data.loc['2022-4':'2023-9'][:-3]
df_train = df_train[['tem_max','tem_min','holiday','24ST','售电量','season']]
df_train = df_train[['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']]
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 = {}
# for i in range(200):
x_train,x_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=42)
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = xgb.XGBRegressor(max_depth=6, learning_rate=0.05, n_estimators=150)
model.fit(x_train,y_train)
model.fit(x_train, y_train)
y_pred = model.predict(x_test)
result_test = pd.DataFrame({'test':y_test,'pred':y_pred},index=y_test.index)
result_test = pd.DataFrame({'test': y_test, 'pred': y_pred}, index=y_test.index)
# 指标打印
print(abs(y_test - y_pred).mean() / y_test.mean())
eval_pred = model.predict(X_eval)
result_eval = pd.DataFrame({'eval':df_eval['售电量'],'pred':eval_pred},index=df_eval['售电量'].index)
result_eval = pd.DataFrame({'eval': df_eval['售电量'], 'pred': eval_pred}, index=df_eval['售电量'].index)
print(result_eval)
goal = (result_eval['eval'][-3:].sum()-result_eval['pred'][-3:].sum())/result_eval['eval'].sum()
goal = (result_eval['eval'][-3:].sum() - result_eval['pred'][-3:].sum()) / result_eval['eval'].sum()
print(goal)
goal2 = (result_eval['eval'][-23:].sum()-result_eval['pred'][-23:].sum())/result_eval['eval'].sum()
goal2 = (result_eval['eval'][-23:].sum() - result_eval['pred'][-23:].sum()) / result_eval['eval'].sum()
print(goal2)
# if abs(goal) < best_goal:
# best_goal = abs(goal)
# best_i['best_i'] = i
# print(best_i,best_goal)
# 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')
import numpy as np
loaded_model = xgb.XGBRegressor()
loaded_model.load_model('lishui.bin')
X_eval = np.array([
[22.3,16.19,23,1,0],
[23.69,14.5,23,0,0],
[23.69,14,23,0,0]])
[21,10,10,0,0],
[21, 11, 10, 0, 0],
[18, 7, 10, 0, 0],
[17, 9, 10, 0, 0],
[17, 10, 10, 0, 0]
])
print(model.predict(X_eval))

@ -83,11 +83,12 @@ print(result_eval)
# 保存模型
model.save_model('taizhou.bin')
import numpy as np
loaded_model = xgb.XGBRegressor()
loaded_model.load_model('taizhou.bin')
X_eval = np.array([
[22.6,15.3,23,1,0],
[23.89,13.4,23,0,0],
[24.69,13.4,23,0,0]])
[19,11,10,0,0],
[21, 7, 10, 0, 0],
[19, 5, 10, 0, 0],
[17, 8, 10, 0, 0],
[16, 7, 10, 0, 0]
])
print(model.predict(X_eval))

@ -5,8 +5,10 @@ from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams['font.sans-serif']=['kaiti']
pd.set_option('display.width',None)
mpl.rcParams['font.sans-serif'] = ['kaiti']
pd.set_option('display.width', None)
def season(x):
if str(x)[5:7] in ('04', '10'):
@ -16,15 +18,16 @@ def season(x):
else:
return 2
def normal(nd):
high = nd.describe()['75%'] + 1.5*(nd.describe()['75%']-nd.describe()['25%'])
low = nd.describe()['25%'] - 1.5*(nd.describe()['75%']-nd.describe()['25%'])
return nd[(nd<high)&(nd>low)]
high = nd.describe()['75%'] + 1.5 * (nd.describe()['75%'] - nd.describe()['25%'])
low = nd.describe()['25%'] - 1.5 * (nd.describe()['75%'] - nd.describe()['25%'])
return nd[(nd < high) & (nd > low)]
parent_dir = os.path.abspath(os.path.join(os.getcwd(),os.pardir))
data = pd.read_excel(os.path.join(parent_dir,'入模数据/嘉兴.xlsx'),index_col='dtdate')
data.index = pd.to_datetime(data.index,format='%Y-%m-%d')
parent_dir = os.path.abspath(os.path.join(os.getcwd(), os.pardir))
data = pd.read_excel(os.path.join(parent_dir, '入模数据/嘉兴.xlsx'), index_col='dtdate')
data.index = pd.to_datetime(data.index, format='%Y-%m-%d')
data = data.loc[normal(data['售电量']).index]
# list2 = []
@ -46,33 +49,30 @@ df_train = data.iloc[450:-1]
# df_train = data[450:][:-3]
print(df_train)
df_train = df_train[['tem_max', 'tem_min', 'holiday', '24ST', '售电量', 'season']]
df_train = df_train[['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']]
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 = {}
# for i in range(400):
x_train,x_test,y_train,y_test = train_test_split(X,y,test_size=0.1,random_state=158)
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=158)
model = xgb.XGBRegressor(max_depth=6, learning_rate=0.05, n_estimators=150)
model.fit(x_train,y_train)
model.fit(x_train, y_train)
y_pred = model.predict(x_test)
result_test = pd.DataFrame({'test':y_test,'pred':y_pred},index=y_test.index)
result_test = pd.DataFrame({'test': y_test, 'pred': y_pred}, index=y_test.index)
# 指标打印
print(abs(y_test - y_pred).mean() / y_test.mean())
eval_pred = model.predict(X_eval)
result_eval = pd.DataFrame({'eval':df_eval['售电量'],'pred':eval_pred},index=df_eval['售电量'].index)
goal = (result_eval['eval'][-3:].sum()-result_eval['pred'][-3:].sum())/result_eval['eval'].sum()
goal2 = (result_eval['eval'][-23:].sum()-result_eval['pred'][-23:].sum())/result_eval['eval'].sum()
print(goal,goal2)
result_eval = pd.DataFrame({'eval': df_eval['售电量'], 'pred': eval_pred}, index=df_eval['售电量'].index)
goal = (result_eval['eval'][-3:].sum() - result_eval['pred'][-3:].sum()) / result_eval['eval'].sum()
goal2 = (result_eval['eval'][-23:].sum() - result_eval['pred'][-23:].sum()) / result_eval['eval'].sum()
print(goal, goal2)
print(result_eval)
# print(goal2)
# if abs(goal) < best_goal :
@ -87,8 +87,12 @@ model.save_model('jiaxing.bin')
loaded_model = xgb.XGBRegressor()
loaded_model.load_model('jiaxing.bin')
import numpy as np
X_eval = np.array([
[23.8,16.69,23,1,0],
[24.8,15.09,23,0,0],
[25.5,14.3,23,0,0]])
print(model.predict(X_eval))
[17, 9, 10, 0, 1],
[16, 3, 10, 0, 1],
[15, 3, 10, 0, 1],
[15, 7, 10, 0, 1],
[14, 5, 10, 0, 1]
])
print(model.predict(X_eval))

@ -5,8 +5,10 @@ from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams['font.sans-serif']=['kaiti']
pd.set_option('display.width',None)
mpl.rcParams['font.sans-serif'] = ['kaiti']
pd.set_option('display.width', None)
def season(x):
if str(x)[5:7] in ('01', '04', '10'):
@ -15,14 +17,17 @@ def season(x):
return 1
else:
return 2
def normal(nd):
high = nd.describe()['75%'] + 1.5*(nd.describe()['75%']-nd.describe()['25%'])
low = nd.describe()['25%'] - 1.5*(nd.describe()['75%']-nd.describe()['25%'])
return nd[(nd<high)&(nd>low)]
high = nd.describe()['75%'] + 1.5 * (nd.describe()['75%'] - nd.describe()['25%'])
low = nd.describe()['25%'] - 1.5 * (nd.describe()['75%'] - nd.describe()['25%'])
return nd[(nd < high) & (nd > low)]
parent_dir = os.path.abspath(os.path.join(os.getcwd(),os.pardir))
data = pd.read_excel(os.path.join(parent_dir,'入模数据/宁波.xlsx'),index_col='dtdate')
data.index = pd.to_datetime(data.index,format='%Y-%m-%d')
parent_dir = os.path.abspath(os.path.join(os.getcwd(), os.pardir))
data = pd.read_excel(os.path.join(parent_dir, '入模数据/宁波.xlsx'), index_col='dtdate')
data.index = pd.to_datetime(data.index, format='%Y-%m-%d')
data = data.loc[normal(data['售电量']).index]
# list2 = []
@ -45,34 +50,32 @@ df_eval = data.loc['2023-10']
df_train = data.loc['2022-01':'2023-10'][:-1]
df_train = df_train[['tem_max', 'tem_min', 'holiday', '24ST', '售电量', 'season']]
df_train = df_train[['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']]
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 = {}
# for i in range(400):
x_train,x_test,y_train,y_test = train_test_split(X,y,test_size=0.1,random_state=142)
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=142)
model = xgb.XGBRegressor(max_depth=6, learning_rate=0.05, n_estimators=150)
model.fit(x_train,y_train)
model.fit(x_train, y_train)
y_pred = model.predict(x_test)
result_test = pd.DataFrame({'test':y_test,'pred':y_pred},index=y_test.index)
result_test = pd.DataFrame({'test': y_test, 'pred': y_pred}, index=y_test.index)
# 指标打印
print(abs(y_test - y_pred).mean() / y_test.mean())
eval_pred = model.predict(X_eval)
result_eval = pd.DataFrame({'eval':df_eval['售电量'],'pred':eval_pred},index=df_eval['售电量'].index)
result_eval = pd.DataFrame({'eval': df_eval['售电量'], 'pred': eval_pred}, index=df_eval['售电量'].index)
goal = (result_eval['eval'][-3:].sum()-result_eval['pred'][-3:].sum())/result_eval['eval'].sum()
goal = (result_eval['eval'][-3:].sum() - result_eval['pred'][-3:].sum()) / result_eval['eval'].sum()
print(goal)
goal2 = (result_eval['eval'][-23:].sum()-result_eval['pred'][-23:].sum())/result_eval['eval'].sum()
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 :
@ -85,14 +88,12 @@ print(result_eval)
# 保存模型
# model.save_model('ningbo.bin')
import numpy as np
loaded_model = xgb.XGBRegressor()
loaded_model.load_model('ningbo.bin')
X_eval = np.array([
[24.39,17.39,23,1,0],
[24.8,15.09,23,0,0],
[25.8,14.3,23,0,0]])
[20, 10, 10, 0, 1],
[19, 12, 10, 0, 1],
[18, 9, 10, 0, 1],
[21, 9, 10, 0, 1],
[14, 9, 10, 0, 1]
])
print(model.predict(X_eval))

@ -6,8 +6,10 @@ from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams['font.sans-serif']=['kaiti']
pd.set_option('display.width',None)
mpl.rcParams['font.sans-serif'] = ['kaiti']
pd.set_option('display.width', None)
def season(x):
if str(x)[5:7] in ('04', '10'):
@ -16,19 +18,24 @@ def season(x):
return 1
else:
return 2
def month(x):
if str(x)[5:7] in ('08','09','10','12','01','02'):
if str(x)[5:7] in ('08', '09', '10', '12', '01', '02'):
return 1
else:
return 0
def normal(nd):
high = nd.describe()['75%'] + 1.5*(nd.describe()['75%']-nd.describe()['25%'])
low = nd.describe()['25%'] - 1.5*(nd.describe()['75%']-nd.describe()['25%'])
return nd[(nd<high)&(nd>low)]
high = nd.describe()['75%'] + 1.5 * (nd.describe()['75%'] - nd.describe()['25%'])
low = nd.describe()['25%'] - 1.5 * (nd.describe()['75%'] - nd.describe()['25%'])
return nd[(nd < high) & (nd > low)]
parent_dir = os.path.abspath(os.path.join(os.getcwd(),os.pardir))
data = pd.read_excel(os.path.join(parent_dir,'入模数据/杭州.xlsx'),index_col='dtdate')
data.index = pd.to_datetime(data.index,format='%Y-%m-%d')
parent_dir = os.path.abspath(os.path.join(os.getcwd(), os.pardir))
data = pd.read_excel(os.path.join(parent_dir, '入模数据/杭州.xlsx'), index_col='dtdate')
data.index = pd.to_datetime(data.index, format='%Y-%m-%d')
data = data.loc[normal(data['售电量']).index]
# list2 = []
@ -54,33 +61,33 @@ df_train = data[500:-1]
df_eval = data.loc['2023-10']
print(df_train)
X = df_train[['tem_max','tem_min','24ST','holiday','season']]
X_eval = df_eval[['tem_max','tem_min','24ST','holiday','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 = {}
# for i in range(400):
x_train,x_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=42)
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = xgb.XGBRegressor(max_depth=6, learning_rate=0.05, n_estimators=150)
model.fit(x_train,y_train)
model.fit(x_train, y_train)
y_pred = model.predict(x_test)
result_test = pd.DataFrame({'test':y_test,'pred':y_pred},index=y_test.index)
result_test = pd.DataFrame({'test': y_test, 'pred': y_pred}, index=y_test.index)
# 指标打印
print(abs(y_test - y_pred).mean() / y_test.mean())
eval_pred = model.predict(X_eval)
result_eval = pd.DataFrame({'eval':df_eval['售电量'],'pred':eval_pred},index=df_eval['售电量'].index)
result_eval = pd.DataFrame({'eval': df_eval['售电量'], 'pred': eval_pred}, index=df_eval['售电量'].index)
goal = (result_eval['eval'][-3:].sum()-result_eval['pred'][-3:].sum())/result_eval['eval'].sum()
print('goal:',goal)
goal = (result_eval['eval'][-3:].sum() - result_eval['pred'][-3:].sum()) / result_eval['eval'].sum()
print('goal:', goal)
goal2 = (result_eval['eval'][-23:].sum()-result_eval['pred'][-23:].sum())/result_eval['eval'].sum()
goal2 = (result_eval['eval'][-23:].sum() - result_eval['pred'][-23:].sum()) / result_eval['eval'].sum()
print('goal2:',goal2)
print('goal2:', goal2)
print(result_eval)
print('r2:',r2_score(y_test,y_pred))
print('r2:', r2_score(y_test, y_pred))
#
# # result_eval.to_csv('asda.csv',encoding='gbk')
# # if abs(goal) < best_goal:
@ -107,9 +114,11 @@ model.save_model('hangzhou.bin')
loaded_model = xgb.XGBRegressor()
loaded_model.load_model('hangzhou.bin')
X_eval = np.array([[24.19,15.30,23,1,0],
[25.1,13.3,23,0,0],
[26.1,11.69,23,0,0]])
print(loaded_model.predict(X_eval))
X_eval = np.array([
[18, 9, 10, 0, 0],
[20, 7, 10, 0, 0],
[17, 4, 10, 0, 0],
[15, 8, 10, 0, 0],
[12, 7, 10, 0, 0]
])
print(model.predict(X_eval))

@ -5,8 +5,10 @@ from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams['font.sans-serif']=['kaiti']
pd.set_option('display.width',None)
mpl.rcParams['font.sans-serif'] = ['kaiti']
pd.set_option('display.width', None)
def season(x):
if str(x)[5:7] in ('01', '02', '10'):
@ -16,15 +18,16 @@ def season(x):
else:
return 2
def normal(nd):
high = nd.describe()['75%'] + 1.5*(nd.describe()['75%']-nd.describe()['25%'])
low = nd.describe()['25%'] - 1.5*(nd.describe()['75%']-nd.describe()['25%'])
return nd[(nd<high)&(nd>low)]
high = nd.describe()['75%'] + 1.5 * (nd.describe()['75%'] - nd.describe()['25%'])
low = nd.describe()['25%'] - 1.5 * (nd.describe()['75%'] - nd.describe()['25%'])
return nd[(nd < high) & (nd > low)]
parent_dir = os.path.abspath(os.path.join(os.getcwd(),os.pardir))
data = pd.read_excel(os.path.join(parent_dir,'入模数据/温州.xlsx'),index_col='dtdate')
data.index = pd.to_datetime(data.index,format='%Y-%m-%d')
parent_dir = os.path.abspath(os.path.join(os.getcwd(), os.pardir))
data = pd.read_excel(os.path.join(parent_dir, '入模数据/温州.xlsx'), index_col='dtdate')
data.index = pd.to_datetime(data.index, format='%Y-%m-%d')
data = data.loc[normal(data['售电量']).index]
# list2 = []
@ -49,33 +52,33 @@ df_train = data[450:-1]
# df_train = data[450:][:-3]
print(df_train)
df_train = df_train[['tem_max','tem_min','holiday','24ST','售电量','season']]
df_train = df_train[['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']]
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 = {}
# for i in range(400):
x_train,x_test,y_train,y_test = train_test_split(X,y,test_size=0.1,random_state=42)
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42)
model = xgb.XGBRegressor(max_depth=6, learning_rate=0.05, n_estimators=150)
model.fit(x_train,y_train)
model.fit(x_train, y_train)
y_pred = model.predict(x_test)
result_test = pd.DataFrame({'test':y_test,'pred':y_pred},index=y_test.index)
result_test = pd.DataFrame({'test': y_test, 'pred': y_pred}, index=y_test.index)
# 指标打印
print(abs(y_test - y_pred).mean() / y_test.mean())
eval_pred = model.predict(X_eval)
result_eval = pd.DataFrame({'eval':df_eval['售电量'],'pred':eval_pred},index=df_eval['售电量'].index)
result_eval = pd.DataFrame({'eval': df_eval['售电量'], 'pred': eval_pred}, index=df_eval['售电量'].index)
goal = (result_eval['eval'][-3:].sum()-result_eval['pred'][-3:].sum())/result_eval['eval'].sum()
goal = (result_eval['eval'][-3:].sum() - result_eval['pred'][-3:].sum()) / result_eval['eval'].sum()
print(goal)
goal2 = (result_eval['eval'][-23:].sum()-result_eval['pred'][-23:].sum())/result_eval['eval'].sum()
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 :
@ -90,8 +93,12 @@ loaded_model = xgb.XGBRegressor()
loaded_model.load_model('wenzhou.bin')
import numpy as np
X_eval = np.array([[22.8,15.0,23,1,0],
[24,13.59,23,0,0],
[24.39,14.09,23,0,0]])
print(model.predict(X_eval))
X_eval = np.array([
[23, 11, 10, 0, 1],
[21, 8, 10, 0, 1],
[21, 8, 10, 0, 1],
[21, 9, 10, 0, 1],
[17, 7, 10, 0, 1]
])
print(model.predict(X_eval))

@ -4,11 +4,13 @@ import os
from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
import matplotlib as mpl
mpl.rcParams['font.sans-serif']=['kaiti']
pd.set_option('display.width',None)
mpl.rcParams['font.sans-serif'] = ['kaiti']
pd.set_option('display.width', None)
import random
import matplotlib.pyplot as plt
def season(x):
if str(x)[5:7] in ('10'):
return 0
@ -17,15 +19,16 @@ def season(x):
else:
return 2
def normal(nd):
high = nd.describe()['75%'] + 1.5*(nd.describe()['75%']-nd.describe()['25%'])
low = nd.describe()['25%'] - 1.5*(nd.describe()['75%']-nd.describe()['25%'])
return nd[(nd<high)&(nd>low)]
high = nd.describe()['75%'] + 1.5 * (nd.describe()['75%'] - nd.describe()['25%'])
low = nd.describe()['25%'] - 1.5 * (nd.describe()['75%'] - nd.describe()['25%'])
return nd[(nd < high) & (nd > low)]
parent_dir = os.path.abspath(os.path.join(os.getcwd(),os.pardir))
data = pd.read_excel(os.path.join(parent_dir,'入模数据/湖州.xlsx'),index_col='dtdate')
data.index = pd.to_datetime(data.index,format='%Y-%m-%d')
parent_dir = os.path.abspath(os.path.join(os.getcwd(), os.pardir))
data = pd.read_excel(os.path.join(parent_dir, '入模数据/湖州.xlsx'), index_col='dtdate')
data.index = pd.to_datetime(data.index, format='%Y-%m-%d')
data = data.loc[normal(data['售电量']).index]
# list2 = []
@ -49,40 +52,41 @@ df_eval = data.loc['2023-10']
df_train = data[450:-1]
# df_train = data[450:][:-3]
print(df_train)
df_train = df_train[['tem_max','tem_min','holiday','24ST','售电量','season']]
df_train = df_train[['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']]
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)
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=158)
model = xgb.XGBRegressor(max_depth=6, learning_rate=0.05, n_estimators=150)
model.fit(x_train,y_train)
model.fit(x_train, y_train)
y_pred = model.predict(x_test)
result_test = pd.DataFrame({'test':y_test,'pred':y_pred},index=y_test.index)
result_test = pd.DataFrame({'test': y_test, 'pred': y_pred}, index=y_test.index)
# 指标打印
print(abs(y_test - y_pred).mean() / y_test.mean())
eval_pred = model.predict(X_eval)
result_eval = pd.DataFrame({'eval':df_eval['售电量'],'pred':eval_pred},index=df_eval['售电量'].index)
result_eval = pd.DataFrame({'eval': df_eval['售电量'], 'pred': eval_pred}, index=df_eval['售电量'].index)
goal = (result_eval['eval'][-3:].sum()-result_eval['pred'][-3:].sum())/result_eval['eval'].sum()
goal = (result_eval['eval'][-3:].sum() - result_eval['pred'][-3:].sum()) / result_eval['eval'].sum()
print(goal)
goal2 = (result_eval['eval'][-23:].sum()-result_eval['pred'][-23:].sum())/result_eval['eval'].sum()
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()
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]
])
import numpy as np
X_eval = np.array([
[15, 8, 10, 0, 1],
[18, 9, 10, 0, 1],
[15, 8, 10, 0, 1],
[16, 8, 10, 0, 1],
[12, 7, 10, 0, 1]
])
print(model.predict(X_eval))

@ -5,8 +5,10 @@ from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams['font.sans-serif']=['kaiti']
pd.set_option('display.width',None)
mpl.rcParams['font.sans-serif'] = ['kaiti']
pd.set_option('display.width', None)
def season(x):
if str(x)[5:7] in ('01', '02', '10', '11'):
@ -16,15 +18,16 @@ def season(x):
else:
return 2
def normal(nd):
high = nd.describe()['75%'] + 1.5*(nd.describe()['75%']-nd.describe()['25%'])
low = nd.describe()['25%'] - 1.5*(nd.describe()['75%']-nd.describe()['25%'])
return nd[(nd<high)&(nd>low)]
high = nd.describe()['75%'] + 1.5 * (nd.describe()['75%'] - nd.describe()['25%'])
low = nd.describe()['25%'] - 1.5 * (nd.describe()['75%'] - nd.describe()['25%'])
return nd[(nd < high) & (nd > low)]
parent_dir = os.path.abspath(os.path.join(os.getcwd(),os.pardir))
data = pd.read_excel(os.path.join(parent_dir,'入模数据/绍兴.xlsx'),index_col='dtdate')
data.index = pd.to_datetime(data.index,format='%Y-%m-%d')
parent_dir = os.path.abspath(os.path.join(os.getcwd(), os.pardir))
data = pd.read_excel(os.path.join(parent_dir, '入模数据/绍兴.xlsx'), index_col='dtdate')
data.index = pd.to_datetime(data.index, format='%Y-%m-%d')
data = data.loc[normal(data['售电量']).index]
# list2 = []
@ -48,35 +51,33 @@ df_train = data[450:-1]
# df_train = data[450:][:-3]
print(df_train)
df_train = df_train[['tem_max', 'tem_min', 'holiday', '24ST', '售电量', 'season']]
df_train = df_train[['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']]
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 = {}
# for i in range(400):
x_train,x_test,y_train,y_test = train_test_split(X,y,test_size=0.1,random_state=42)
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42)
model = xgb.XGBRegressor(max_depth=6, learning_rate=0.05, n_estimators=150)
model.fit(x_train,y_train)
model.fit(x_train, y_train)
y_pred = model.predict(x_test)
result_test = pd.DataFrame({'test':y_test,'pred':y_pred},index=y_test.index)
result_test = pd.DataFrame({'test': y_test, 'pred': y_pred}, index=y_test.index)
# 指标打印
print(abs(y_test - y_pred).mean() / y_test.mean())
eval_pred = model.predict(X_eval)
result_eval = pd.DataFrame({'eval':df_eval['售电量'],'pred':eval_pred},index=df_eval['售电量'].index)
result_eval = pd.DataFrame({'eval': df_eval['售电量'], 'pred': eval_pred}, index=df_eval['售电量'].index)
goal = (result_eval['eval'][-3:].sum()-result_eval['pred'][-3:].sum())/result_eval['eval'].sum()
goal = (result_eval['eval'][-3:].sum() - result_eval['pred'][-3:].sum()) / result_eval['eval'].sum()
print(goal)
goal2 = (result_eval['eval'][-23:].sum()-result_eval['pred'][-23:].sum())/result_eval['eval'].sum()
goal2 = (result_eval['eval'][-23:].sum() - result_eval['pred'][-23:].sum()) / result_eval['eval'].sum()
print(goal2)
# if abs(goal) < best_goal :
# best_goal = abs(goal)
@ -89,8 +90,12 @@ model.save_model('shaoxing.bin')
loaded_model = xgb.XGBRegressor()
loaded_model.load_model('shaoxing.bin')
import numpy as np
X_eval = np.array([[25.1,17.1,23,1,0],
[25.8,13.5,23,0,0],
[26.6,13.5,23,0,0]])
print(model.predict(X_eval))
X_eval = np.array([
[17, 9, 10, 0, 0],
[20, 6, 10, 0, 0],
[17, 5, 10, 0, 0],
[16, 8, 10, 0, 0],
[12, 7, 10, 0, 0]
])
print(model.predict(X_eval))

@ -4,28 +4,31 @@ import os
from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
import matplotlib as mpl
mpl.rcParams['font.sans-serif']=['kaiti']
pd.set_option('display.width',None)
mpl.rcParams['font.sans-serif'] = ['kaiti']
pd.set_option('display.width', None)
import random
import matplotlib.pyplot as plt
def season(x):
if str(x)[5:7] in ('01', '02', '03', '04', '05', '06', '09', '10', '11', '12'):
return 1
else:
return 2
def normal(nd):
high = nd.describe()['75%'] + 1.5*(nd.describe()['75%']-nd.describe()['25%'])
low = nd.describe()['25%'] - 1.5*(nd.describe()['75%']-nd.describe()['25%'])
return nd[(nd<high)&(nd>low)]
high = nd.describe()['75%'] + 1.5 * (nd.describe()['75%'] - nd.describe()['25%'])
low = nd.describe()['25%'] - 1.5 * (nd.describe()['75%'] - nd.describe()['25%'])
return nd[(nd < high) & (nd > low)]
parent_dir = os.path.abspath(os.path.join(os.getcwd(),os.pardir))
data = pd.read_excel(os.path.join(parent_dir,'入模数据/舟山.xlsx'),index_col='dtdate')
data.index = pd.to_datetime(data.index,format='%Y-%m-%d')
parent_dir = os.path.abspath(os.path.join(os.getcwd(), os.pardir))
data = pd.read_excel(os.path.join(parent_dir, '入模数据/舟山.xlsx'), index_col='dtdate')
data.index = pd.to_datetime(data.index, format='%Y-%m-%d')
data = data.loc[normal(data['售电量']).index]
# list2 = []
# list0 = []
# list1 = []
@ -46,30 +49,28 @@ df_eval = data.loc['2023-10']
df_train = data.iloc[450:-1]
# df_train = data.iloc[450:][:-3]
df_train = df_train[['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']]
df_train = df_train[['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)
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42)
model = xgb.XGBRegressor(max_depth=6, learning_rate=0.05, n_estimators=150)
model.fit(x_train,y_train)
model.fit(x_train, y_train)
y_pred = model.predict(x_test)
result_test = pd.DataFrame({'test':y_test,'pred':y_pred},index=y_test.index)
result_test = pd.DataFrame({'test': y_test, 'pred': y_pred}, index=y_test.index)
# 指标打印
print(abs(y_test - y_pred).mean() / y_test.mean())
eval_pred = model.predict(X_eval)
result_eval = pd.DataFrame({'eval':df_eval['售电量'],'pred':eval_pred},index=df_eval['售电量'].index)
result_eval = pd.DataFrame({'eval': df_eval['售电量'], 'pred': eval_pred}, index=df_eval['售电量'].index)
goal = (result_eval['eval'][-3:].sum()-result_eval['pred'][-3:].sum())/result_eval['eval'].sum()
goal = (result_eval['eval'][-3:].sum() - result_eval['pred'][-3:].sum()) / result_eval['eval'].sum()
print(goal)
goal2 = (result_eval['eval'][-23:].sum()-result_eval['pred'][-23:].sum())/result_eval['eval'].sum()
goal2 = (result_eval['eval'][-23:].sum() - result_eval['pred'][-23:].sum()) / result_eval['eval'].sum()
print(goal2)
print(result_eval)
@ -77,8 +78,12 @@ model.save_model('zhoushan.bin')
loaded_model = xgb.XGBRegressor()
loaded_model.load_model('zhoushan.bin')
import numpy as np
X_eval = np.array([[23.19,19.3,23,1,0],
[23.8,18.39,23,0,0],
[23.69,18.3,23,0,0]])
print(model.predict(X_eval))
X_eval = np.array([
[18, 11, 10, 0, 1],
[17, 9, 10, 0, 1],
[17, 8, 10, 0, 1],
[18, 10, 10, 0, 1],
[14, 7, 10, 0, 1]
])
print(model.predict(X_eval))

@ -73,13 +73,17 @@ model.save_model('quzhou.bin')
loaded_model = xgb.XGBRegressor()
loaded_model.load_model('quzhou.bin')
import numpy as np
X_eval = np.array([[23.69,16.5,23,1,0],
[24.5,15.19,23,0,0],
[25.19,13.9,23,0,0]])
X_eval = np.array([
[19,10,10,0,1],
[19, 7, 10, 0, 1],
[18, 6, 10, 0, 1],
[16, 7, 10, 0, 1],
[14, 10, 10, 0, 1]
])
print(model.predict(X_eval))
# import torch
# from torch import nn
# from torch.utils.data import TensorDataset,DataLoader

@ -88,8 +88,11 @@ model.save_model('jinhua.bin')
loaded_model = xgb.XGBRegressor()
loaded_model.load_model('jinhua.bin')
import numpy as np
X_eval = np.array([[25,16.39,23,1,0],
[25.8,13.69,23,0,0],
[26.39,13.69,23,0,0]])
X_eval = np.array([
[19,12,10,0,1],
[20, 10, 10, 0, 1],
[18, 5, 10, 0, 1],
[17, 6, 10, 0, 1],
[14, 8, 10, 0, 1]
])
print(model.predict(X_eval))

@ -60,3 +60,10 @@
# df = pd.concat(list1,ignore_index=True)
# df.to_csv('各市行业电量预测结果.csv',encoding='gbk')
# print(df)
import pandas as pd
df = pd.read_excel(r'C:\Users\鸽子\Desktop\浙江省11月分行业售电量预测v2.xlsx',sheet_name=1)
print(df.head())
print(df[df.columns[2:]].groupby(df['city_name']).sum().T)
df2 = df[df.columns[2:]].groupby(df['city_name']).sum().T
df2.to_excel(r'C:\Users\鸽子\Desktop\1.xlsx')

@ -49,40 +49,39 @@ def data_preprocessing(data):
data = data.astype(float)
for col in data.columns:
data[col] = normal(data[col])
return data
# 拼接数据集
file_dir = r'./浙江各地市分电压日电量数据'
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))
# file_dir = r'./浙江各地市分电压日电量数据'
# 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))
@ -90,31 +89,31 @@ for excel in os.listdir(file_dir)[1:]:
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,min_value)
# 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,min_value)
# # # 划分训练集和测试集
# train_size = int(len(dataset_x)*0.7)
# train_x = dataset_x[:train_size]
# train_y = dataset_y[:train_size]
# eval_x = dataset_x[train_size:]
# eval_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, 3)
# eval_x = eval_x.reshape(-1, 1, DAYS_FOR_TRAIN)
# eval_y = eval_y.reshape(-1, 1, 3)
#
# # 划分训练集和测试集
train_size = int(len(dataset_x)*0.7)
train_x = dataset_x[:train_size]
train_y = dataset_y[:train_size]
eval_x = dataset_x[train_size:]
eval_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, 3)
eval_x = eval_x.reshape(-1, 1, DAYS_FOR_TRAIN)
eval_y = eval_y.reshape(-1, 1, 3)
# 转为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)
eval_x = torch.from_numpy(eval_x).to(device).type(torch.float32)
eval_y = torch.from_numpy(eval_y).to(device).type(torch.float32)
# # 转为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)
# eval_x = torch.from_numpy(eval_x).to(device).type(torch.float32)
# eval_y = torch.from_numpy(eval_y).to(device).type(torch.float32)
model = LSTM_Regression(DAYS_FOR_TRAIN, 32, output_size=3, num_layers=2).to(device) # 导入模型并设置模型的参数输入输出层、隐藏层等
@ -164,16 +163,15 @@ model = LSTM_Regression(DAYS_FOR_TRAIN, 32, output_size=3, num_layers=2).to(devi
# 创建测试集
max_value,min_value = 192751288.47,0.0
model.load_state_dict(torch.load('8_dy3.pth')) # cpu跑加上,map_location=torch.device('cpu')
file_dir = r'./浙江各地市分电压日电量数据'
for excel in os.listdir(file_dir):
df_city = pd.read_excel(os.path.join(file_dir,excel),index_col='stat_date')
df_city.index = pd.to_datetime(df_city.index)
df_city = df_city.loc['2023-9'][:-3]
df_city.drop(columns=[i for i in df_city.columns if (df_city[i] == 0).sum() / len(df_city) >= 0.5], inplace=True)
model.load_state_dict(torch.load('best_dy3.pth',map_location=torch.device('cpu'))) # cpu跑加上,map_location=torch.device('cpu')
# file_dir = r'./浙江各地市分电压日电量数据'
city = df_city['地市'].iloc[0]
df = pd.read_excel(r'C:\Users\鸽子\Desktop\浙江电量20231127.xlsx',sheet_name=1)
df = df[df['county_name'].isnull()]
for city in df['city_name'].drop_duplicates():
df_city = df[df['city_name']==city].drop(columns=['county_name','500kv(含330kv)以上']).set_index('pt_date').sort_index()
# df_city.drop(columns=[i for i in df_city.columns if (df_city[i] == 0).sum() / len(df_city) >= 0.5], inplace=True)
result_dict = {}
for level in df_city.columns[1:]:
x, y = create_dataset(df_city[level], 10)
@ -184,13 +182,11 @@ for excel in os.listdir(file_dir):
pred = pred * (max_value - min_value) + min_value
result = pred.cpu().detach().numpy()[-3:]
result_dict[level] = list(result)
df = pd.DataFrame(result_dict,index=['2023-09-28','2023-09-29','2023-09-30'])
df.to_excel(fr'C:\Users\user\Desktop\1\9月分压电量预测28-30\{city} .xlsx')
# print(result_dict)
df1 = pd.DataFrame(result_dict,index=['2023-11-28','2023-11-29','2023-11-30'])
df1.to_excel(fr'C:\Users\鸽子\Desktop\11月分压电量预测28-30\{city} .xlsx')
print(result_dict)
# # 打印指标
# 打印指标
# print(abs(pred - df[-3:]).mean() / df[-3:].mean())
# result_eight = pd.DataFrame({'pred': np.round(pred,1),'real': df[-3:]})
# target = (result_eight['pred'].sum() - result_eight['real'].sum()) / df[-31:].sum()

@ -141,36 +141,36 @@ min_loss = 1
# # 保存/读取模型
# torch.save(best_para,'hy3.pth')
model = LSTM_Regression(DAYS_FOR_TRAIN, 32, output_size=3, num_layers=2).to(device)
model.load_state_dict(torch.load('hy3.pth'))
model.load_state_dict(torch.load('hy3.pth',map_location=torch.device('cpu')))
# 测试
model = model.eval()
dataset_x = dataset_x.reshape(-1, 1, DAYS_FOR_TRAIN) # (seq_size, batch_size, feature_size)
dataset_x = torch.from_numpy(dataset_x).to(device).type(torch.float32)
pred_test = model(dataset_x) # 全量训练集
pred_test = pred_test.view(-1)
pred_test = np.concatenate((np.zeros(DAYS_FOR_TRAIN), pred_test.cpu().detach().numpy()))
plt.plot(pred_test.reshape(-1), 'r', label='prediction')
plt.plot(dataset_y.reshape(-1), 'b', label='real')
plt.plot((train_size*3, train_size*3), (0, 1), 'g--')
plt.legend(loc='best')
plt.show()
# dataset_x = dataset_x.reshape(-1, 1, DAYS_FOR_TRAIN) # (seq_size, batch_size, feature_size)
# dataset_x = torch.from_numpy(dataset_x).to(device).type(torch.float32)
#
# pred_test = model(dataset_x) # 全量训练集
# pred_test = pred_test.view(-1)
# pred_test = np.concatenate((np.zeros(DAYS_FOR_TRAIN), pred_test.cpu().detach().numpy()))
#
# plt.plot(pred_test.reshape(-1), 'r', label='prediction')
# plt.plot(dataset_y.reshape(-1), 'b', label='real')
# plt.plot((train_size*3, train_size*3), (0, 1), 'g--')
# plt.legend(loc='best')
# plt.show()
# model.load_state_dict(torch.load('hy3.pth',map_location=torch.device('cpu')))
# max_value = 354024930.8
# min_value = 0.0
# 创建测试
file_dir = './浙江各地市行业电量数据'
for excel in os.listdir(file_dir):
df_city = pd.read_excel(os.path.join(file_dir,excel),index_col='stat_date')
df_city.index = df_city.index.map(lambda x:str(x).strip()[:10])
# 测试
# file_dir = './浙江各地市行业电量数据'
df = pd.read_excel(r'C:\Users\鸽子\Desktop\浙江电量20231127.xlsx',sheet_name=2)
for city in df['city_name'].drop_duplicates():
df_city = df[df['city_name']==city].sort_values(by='stat_date').set_index('stat_date')
df_city.index = pd.to_datetime(df_city.index)
df_city = df_city.loc['2023-9'][:-3]
city = df_city['地市'].iloc[0]
# df_city.index = df_city.index.map(lambda x:str(x).strip()[:10])
# df_city.index = pd.to_datetime(df_city.index)
# df_city = df_city.loc['2023-9'][:-3]
result_dict = {}
for industry in df_city.columns[1:]:
df_city[industry] = df_city[industry].astype('float')
@ -182,8 +182,8 @@ for excel in os.listdir(file_dir):
pred = pred * (max_value - min_value) + min_value
result = pred.cpu().detach().numpy()[-3:]
result_dict[industry] = list(result)
df = pd.DataFrame(result_dict,index=['2023-09-28','2023-09-29','2023-09-30'])
df.to_excel(fr'C:\Users\user\Desktop\9月行业电量预测28-30\{city} .xlsx')
df1 = pd.DataFrame(result_dict,index=['2023-11-28','2023-11-29','2023-11-30'])
df1.to_excel(fr'C:\Users\鸽子\Desktop\11月行业电量预测27-30\{city} .xlsx')
print(time.time()-t1)
print(result_dict)

Loading…
Cancel
Save