<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 用于時間序列回歸的 MLP 我們已經看到了圖像數據分類的例子;現在讓我們看一下時間序列數據的回歸。我們將建立并使用 MLP 作為一個較小的單變量時間序列數據集,稱為國際航空公司乘客數據集。該數據集包含多年來的乘客總數。該數據集可從以下鏈接獲得: * [https://www.kaggle.com/andreazzini/international-airline-passengers/data](https://www.kaggle.com/andreazzini/international-airline-passengers/data) * [https://datamarket.com/data/set/22u3/international-airline-passengers-monthly-totals-in-thousands-jan-49-dec-60](https://datamarket.com/data/set/22u3/international-airline-passengers-monthly-totals-in-thousands-jan-49-dec-60) 讓我們從準備數據集開始。 1. 首先,使用以下代碼加載數據集: ```py filename = os.path.join(datasetslib.datasets_root, 'ts-data', 'international-airline-passengers-cleaned.csv') dataframe = pd.read_csv(filename,usecols=[1],header=0) dataset = dataframe.values dataset = dataset.astype('float32') ``` 1. 利用`datasetslib`的效用函數,我們將數據集分成測試和訓練集。對于時間序列數據集,我們有一個單獨的函數,不會改變觀察結果,因為對于時間序列回歸,我們需要維持觀察的順序。我們使用 67%的數據進行訓練,33%的數據用于測試。您可能希望嘗試使用不同比例的示例。 ```py train,test=dsu.train_test_split(dataset,train_size=0.67) ``` 1. 對于時間序列回歸,我們轉換數據集以構建監督數據集。在此示例中,我們使用兩個時間步長的滯后。我們將`n_x`設置為 2,`mvts_to_xy()`函數返回輸入和輸出(`X`和`Y`)訓練和測試集,使得 X 在兩列和 Y 中具有時間{t-1,t}的值在一列中具有時間{t + 1}的值。我們的學習算法假設通過找到時間{t-1,t,t + 1}的值之間的關系,可以學習時間 t + 1 的值。 ```py # reshape into X=t-1,t and Y=t+1 n_x=2 n_y=1 X_train, Y_train, X_test, Y_test = tsd.mvts_to_xy(train, test,n_x=n_x,n_y=n_y) ``` 有關將時間序列數據集轉換為監督學習問題的更多信息,請訪問以下鏈接:[http://machinelearningmastery.com/convert-time-series-supervised-learning-problem-python/](http://machinelearningmastery.com/convert-time-series-supervised-learning-problem-python/). 現在我們在我們的訓練數據集上構建和訓練模型: 1. 我導入所需的 Keras 模塊: ```py from keras.models import Sequential from keras.layers import Dense from keras.optimizers import SGD ``` 1. 設置構建模型所需的超參數: ```py num_layers = 2 num_neurons = [8,8] n_epochs = 50 batch_size = 2 ``` 請注意,我們使用批量大小為 2,因為數據集非常小。我們使用兩層 MLP,每層只有八個神經元,因為我們的示例問題的規模很小。 1. 構建,編譯和訓練模型: ```py model = Sequential() model.add(Dense(num_neurons[0], activation='relu', input_shape=(n_x,))) model.add(Dense(num_neurons[1], activation='relu')) model.add(Dense(units=1)) model.summary() model.compile(loss='mse', optimizer='adam') model.fit(X_train, Y_train, batch_size=batch_size, epochs=n_epochs) ``` 請注意,我們使用 Adam 優化器而不是 SGD。 您可能想要嘗試 TensorFlow 和 Keras 中可用的不同優化器。 1. 評估模型并打印均方誤差(MSE)和均方根誤差(RMSE): ```py score = model.evaluate(X_test, Y_test) print('\nTest mse:', score) print('Test rmse:', math.sqrt(score)) ``` 我們得到以下輸出: ```py Test mse: 5619.24934188 Test rmse: 74.96165247566114 ``` 1. 使用我們的模型預測值并繪制它們,用于測試和訓練數據集: ```py # make predictions Y_train_pred = model.predict(X_train) Y_test_pred = model.predict(X_test) # shift train predictions for plotting Y_train_pred_plot = np.empty_like(dataset) Y_train_pred_plot[:, :] = np.nan Y_train_pred_plot[n_x-1:len(Y_train_pred)+n_x-1, :] = Y_train_pred # shift test predictions for plotting Y_test_pred_plot = np.empty_like(dataset) Y_test_pred_plot[:, :] = np.nan Y_test_pred_plot[len(Y_train_pred)+(n_x*2)-1:len(dataset)-1, :] = \ Y_test_pred # plot baseline and predictions plt.plot(dataset,label='Original Data') plt.plot(Y_train_pred_plot,label='Y_train_pred') plt.plot(Y_test_pred_plot,label='Y_test_pred') plt.legend() plt.show() ``` 我們得到以下關于原始和預測時間序列值的圖: ![](https://img.kancloud.cn/29/f8/29f89ff41dffc6764dacaaba37f1e613_880x578.png) 如你所見,這是一個非常好的估計。然而,在現實生活中,數據本質上是多變量和復雜的。因此,我們將在后面的章節中看到時間序列數據的循環神經網絡架構。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看