在 Python Console 运行如下代码:
import matplotlib
print(matplotlib.matplotlib_fname())输出:xxx/lib/python3.9/site-packages/matplotlib/mpl-data/matplotlibrc
下载 http://129.204.205.246/downloads/SimHei.ttf 文件并复制到 xxx/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf 中。
在 Python Console 运行如下代码:
import matplotlib
print(matplotlib.get_cachedir())最后在命令行输入:
>> rm -rf 输出的地址/*>> pip install -r requirements.txt训练数据格式依据 wtbdata_245days ,可在链接 link 中下载。请将数据集和其他文件置于同一目录中。
FD_gisway
|-- eval.py
|-- train.py
|-- .
|-- .
|-- .
|-- wtbdata_245days.csv
每10分钟采集一次数据,共9个变量。
测试数据格式依据 test.csv。
评价指标包含 mae, rmse, mape, r^2 四种。
# eval.py
def evaluation(y_test, y_predict):
...
return mae, rmse, mape, r_2可选模型包含 LSTM,RNN,GRU,CNN,MLP 五种,均具有两层隐藏层。
根据实际需要更改如下一些参数。
文件输入的路径:
#train.py 17:
data0 = pd.read_csv('wtbdata_245days.csv')文件采用多少数据训练。对于 window_size = 18, step = 1,隐藏层结点数为 108、36 时,约3000行数据即可。
#train.py 20:
data0 = data0[:3000]window_size:采用多少时间点的数据来预测。
#train.py 117:
window_size = 18默认隐藏层结点数为 window_size * 6 和 window_size * 2。
#train.py 118~123:
batch_size = 32
epochs = 50
hidden_dim = [window_size * 6, window_size * 2]
train_ratio = 0.8
show_fit = True
show_loss = Truemode:采用哪个模型。
#train.py 124:
mode = 'RNN' # LSTM,RNN,GRU,CNN,MLPstep:预测多少个时间点后的功率。例如设置 step = 1,代表预测 1*10 = 10 分钟后。
#train.py 125:
step = 1参数设置完后在命令行中运行训练:
>> python train.py训练中会保存一些参数到一些 txt 文件中,在预测时用于处理数据。
#train.py 130~135:
np.savetxt('x_mean.txt', np.array(x_mean), delimiter=',', fmt='%f')
np.savetxt('x_var.txt', np.array(x_var), delimiter=',', fmt='%f')
np.savetxt('y_mean.txt', np.array(y_mean), delimiter=',', fmt='%f')
np.savetxt('y_var.txt', np.array(y_var), delimiter=',', fmt='%f')
with open("window_size.txt", "w") as file:
file.write(str(window_size))同时还会保存训练后的模型到文件夹 step_1 中:
#train.py 112:
tf.saved_model.save(model, "step_1")可根据 window_size 和 step 的不同,训练不同模型保存到不同文件夹中。
文件输入路径:
#pred.py 12:
df=pd.read_csv('test.csv')载入训练好的模型:
#pred.py 26:
mymodel = tf.saved_model.load("step_1")读取 txt 文件中保存的一些参数:
#pred.py 27~33:
x_mean=np.loadtxt('x_mean.txt')
x_var=np.loadtxt('x_var.txt')
y_mean=np.loadtxt('y_mean.txt')
y_var=np.loadtxt('y_var.txt')
with open("window_size.txt", "r") as file:
window_size = file.read()
window_size=int(window_size)处理数据。
#pred.py 36~43:
X_=build_sequences(df,window_size=window_size)
for mtr in X_:
for i in range(window_size):
for j in range(lll):
mtr[i,j]=(mtr[i,j]-x_mean[j])/math.sqrt(x_var[j])
#X_=[X_[-1]]
X_=tf.cast(X_,tf.float32)预测。
#pred.py 44~48:
prd=mymodel(X_)
prd=np.array(prd)
for row in prd:
row[0]=row[0]*math.sqrt(y_var)+y_mean在命令行中运行:
>> python pred.py最后会输出以每 window_size 行数据为一个窗口, step 个时间点后的预测功率值。

