ニューラルネットワークと回帰戦闘任務の第二章 - 温度ニューラルネットワーク回帰タスク

最初のステップ:可視化機能

輸入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()

 

おすすめ

転載: www.cnblogs.com/my-love-is-python/p/12657146.html