最初のステップ:可視化機能
輸入PDとしてパンダ 輸入NPとしてnumpyの 輸入日時 輸入PLTとしてmatplotlib.pyplot 機能 = pd.read_csv(' temps.csv ' ) #ビジュアルグラフィックス を印刷(features.head(5 )) #使用日付構成されたビジュアライゼーション の日付= [STR(int型(年))+ " - " + STR(INT(月))+ " - " + STR(INT(日))のための年、月、日中に ZIP(特長[ ' 年' ]、[機能' 月' ]、特長[ ' 日' ])] 日付 = [datetime.datetime.strptime(日付、" %Y-%M-%D ")のための日付に日付] #は、オペレーションの描画を行います plt.style.use(" fivethirtyeightを" ) 図、((AX1、AX2)、(AX3、AX4)) = plt.subplots(NROWS = 2、ncolsの= 2、figsize =(10、10 )) fig.autofmt_xdate(回転 = 45 ) ax1.plot(日付、機能[ " temp_1 " ]) ax1.set_xlabel('' ) ax1.set_ylabel(' 温度' ) ax1.set_title(「前の最高温度」) ax2.plot(日付、機能[ " temp_2 " ]) ax2.set_xlabel('' ) ax2.set_ylabel(' 温度' ) ax2.set_title(「二日プリオ最大温度」) ax3.plot(日付、機能[ " 友人" ]) ax3.set_xlabel('' ) ax3.set_ylabel(' 温度' ) ax3.set_title(" フレンド推定" ) ax4.plot(日付、機能[ " 実際" ]) ax4.set_xlabel('' ) ax4.set_ylabel(' 温度' ) ax4.set_title(" 最高温度" ) plt.tight_layout(パッド = 2 ) plt.show()
ステップ2:ラベルは標準操作法を用いながら、真の値の入力特徴として除去されるような特徴は、非ホット符号化されたデジタル、温度の実際の値であります
#ホットエンコード設定済み #のトラバーサル機能、なりませんデジタル除去特性 のためにFEATURE_NAME でfeatures.columnsを: 印刷(feature_nameはへの) 挑戦: フロート(features.loc [0、FEATURE_NAME]) 除く: のために S にセット(特徴[FEATURE_NAME]): 機能[S] = 0 #時間特性のデータの各行を追加 するための F でレンジ()(特徴LEN)。 features.loc [F、[features.iloc [F] [FEATURE_NAME]]] = 1 #特徴対応週削除 (FEATURE_NAME軸= 1に= features.drop機能) #ワンホット符号化を用いて構成してもよい 。#特長= pd.get_dummies(特徴) #設定されたラベルの ラベル= np.array(特長[ ' 実' ]) #構造的特徴 features.drop =(機能' 実際'、軸=。1 ) #トーチネットワークトレーニング実行 インポートトーチ #正規化された動作特性 から sklearn インポート前処理 input_feature = preprocessing.StandardScaler()。fit_transform(機能) プリント(input_feature [:, 5])
第三段階:プロセスtorch.tensor特徴及びラベルは、フォーマットテンソルに変換され、初期バイアスを秤量され、BATCH_SIZEは、反復最適化を使用して行われ、weight.grad biases.grad勾配最適化学習速度の使用
#ニューラルネットワークの構築 X = torch.tensor(input_feature、DTYPE = torch.float) Y = torch.tensor(ラベル、DTYPE = torch.float) 重量 = torch.randn((14、128)、DTYPE = torch.float、requires_grad = TRUE) 偏見 = torch.randn(128、DTYPE = torch.float、requires_grad = 真) WEIGHT2 = torch.randn((128、1)、DTYPE = torch.float、requires_grad = TRUE) biases2 = torch.randn(1、DTYPE = torch.float、requires_grad = 真) learning_rate = 0.001 損失 = [] BATCH_SIZE = 16 用 I における範囲(1000 ): #计算隐层 batch_loss = [] のための開始に範囲(0、lenの(input_feature)、BATCH_SIZE)。 終了 = + BATCH_SIZEを開始する場合は、スタート+ BATCH_SIZE <LEN(input_feature)他のLEN(input_feature) XX = torch.tensor(input_feature [スタート:終了]を、DTYPE = torch.float、requires_grad = TRUE) YY = torch.tensor(ラベル[スタート:終了]、DTYPE = torch.float、requires_grad = TRUE) 隠れ = xx.mm(重量)+ バイアス #加え活性化関数 =隠さtorch.sigmoid(隠された) #の予測子 予測= hidden.mm(WEIGHT2)+ biases2 #算出損失値 損失= torch.mean((予測- YY ) ** 2 ) loss.backward() #更新パラメータは、 ( - learning_rate *の_ weight.data.add weight.grad.data) biases.data.add_( - learning_rate * biases.grad.data) weight2.data.add_( - learning_rate * weight2.grad.data) biases2.data.add_( - learning_rate * biases2.grad.data) #各繰り返しは、空にすることを忘れないでください )(weight.grad.data.zero_ biases.grad.data.zero_() weight2.grad.data.zero_() biases2.grad.data.zero_() batch_loss.append(loss.data.numpy()) もし私%100 == 0: losses.append(np.mean(batch_loss)) 印刷(I、np.mean(batch_loss))
ステップ4:ネットワークを再入力するxは最終プロットし、最終予測を得るために計算されます。
= x.mm隠された(重量)+ バイアス #加え活性化関数 隠さ= torch.sigmoid(隠された) #の予測子 予測= hidden.mm(WEIGHT2)+ biases2 予測 = prediction.detach()。numpyの() plt.plot(日付、Y、' B- '、ラベル= ' 実際' ) plt.plot(日付、予測、' RO '、ラベル= ' predit ' ) plt.xticks(回転 = 60 ) plt.title(" 温度が予測します" ) plt.xlabel(" 日付" ) plt.ylabel(" 温度" ) plt.show()