AS NP numpyのインポート インポートPANDAS AS PD インポートAS PLT matplotlib.pyplot インポートトーチ plt.rcParams [ 'セリフ-font.sansを'] = [」SimHei ']#表示適切に定義された中国語は太字 plt.rcParams ['軸。 unicode_minus'] = Falseの#は通常の表示に負の符号を示し #インポートデータ RMB_EU.xltx 『=ファイル名』 DF = pd.read_excel(=コードファイル名、 『UTF-を8』) ###抽出試験データに データ= df.loc [:[ '時間'、 '高い']] [:]と#2回の最大の値抽出 データ の##の正規化方法の最大値と最小値 データ[ 'ハイ'] =(データ[ 'ハイ'] -dataを[ '高'] .min())/(データ[ ' ハイ'] .MAX() -データ[ ' ハイ'] .min()) DEF create_dataset(データセット、len_x = 7、len_y = 7): [データX]、[データY] 、data_Z = []、[] 、[] のIの範囲内(LEN(データセット) - (+ len_x len_y)+ 1): A =データセット[I:(I + len_x)] data_X.append() B =データセット[(I + len_x):( I + len_x + len_y)] (B)data_Y.append 範囲のiについて(LEN(データセット) - (+ len_x len_y)+1、lenの(データセット)-len_x + 1): A =データセット[I:(I + len_x)] data_Z.append() 戻りnp.array(データX)、np.array(データY)、np.array(data_Z) #构建数据集 X、Y、Z = create_dataset(データ[ '高']、30、30) train_size = INT(LEN(X)* 0.7) test_size = LEN(X) - train_size train_X = X [:train_size] train_Y = Y [ :train_size] test_X = X [train_size:] test_Y = Y [train_size:] train_X.shape、train_Y.shape、test_X.shape、test_Y.shape、Z.shape #设置数据形状 train_X = train_X.reshape(-1、1 、30) train_Y = train_Y.reshape(-1、1、30) test_X = test_X.reshape(-1、1、30) #test_Y = test_Y.reshape(-1、1、7) pred_Z = Z.reshape(-1、1 、30) #转换为テンソル类型 train_X = torch.from_numpy(train_X) train_Y = torch.from_numpy(train_Y) test_X = torch.from_numpy(test_X) #test_Y = torch.from_numpy(test_Y) pred_Z = torch.from_numpy(pred_Z)# 使用CUDA train_X = train_X.cuda() train_Y = train_Y.cuda() test_X = test_X.cuda() #test_Y = test_Y.cuda() pred_Z = pred_Z.cuda() トーチインポートNNから torch.autogradインポート変数から RNN = nn.LSTM(30,30,2).cuda() RNN = rnn.double()#数据类型问题 基準= nn.MSELoss() オプティマイザ= torch.optim.Adam(rnn.parameters()、LR = 1E-2) #スタート練習 中範囲Eのための(50): var_X =可変(train_X) var_Y =可変(train_Y) 伝搬する#の前に OUT、(H、C)= RNN(var_X) 損失=基準(OUT、var_Y) #リバース伝搬 optimizer.zero_grad() loss.backward() optimizer.step() 印刷( 'エポック:{}、損失:{:} .5f'。。フォーマット(E + 1、loss.data [0])) モデル= RNN .eval()#は、テストモードに変換さ var_data =可変(test_X) pred_test、予測結果(TH、TC)=モデル( var_data)#のテストセット pred_test pred_test.reshape =(-1、30) pred_test pred_test.cpu =( ) pred_test pred_test.detach =()。numpyの() pred_test #予測結果と実際の結果が示さ plt.figure(figsize =(12,8)) plt.plot(データ[ '时间'] [train_size:-59]、pred_test [:]、[6]、R ''、ラベル= 'トレイン') #1 plt.plot(データ[ '时间'] [train_size:-29 ]、pred_t、R ''、ラベル= '予測') plt.plot(データ[ '时间'] [train_size:-59]、test_Y [:]、[6]、 'B'、ラベル= '実際の') PLT。プロット(データ[ '时间'] [ - 30:]、pred_1、 'G'、ラベル= '予測') plt.legend(LOC = '最良の') #预测结果 PRED、(_、_)=モデル(pred_Z ) PRED = pred.cpu() PRED = pred.detach()。numpyの() PRED = pred.reshape(-1、30) pred_1 = np.mean(predは、軸= 1) pred_1.shape plt.plot(データ[ '时间'] [ - 30:]、pred_1、 '-g'、ラベル= '新しいです')