<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國際加速解決方案。 廣告
                # Keras 深度學習庫的多類分類教程 > 原文: [https://machinelearningmastery.com/multi-class-classification-tutorial-keras-deep-learning-library/](https://machinelearningmastery.com/multi-class-classification-tutorial-keras-deep-learning-library/) Keras 是一個深度學習的 Python 庫,它包含了高效的數值庫 Theano 和 TensorFlow。 在本教程中,您將了解如何使用 Keras 開發和評估多類分類問題的神經網絡模型。 完成本分步教程后,您將了解: * 如何從 CSV 加載數據并使其可供 Keras 使用。 * 如何用神經網絡建立多類分類數據進行建模。 * 如何用 scikit-learn 評估 Keras 神經網絡模型。 讓我們開始吧。 * **2016 年 10 月更新**:更新了 Keras 1.1.0 和 scikit-learn v0.18 的示例。 * **2017 年 3 月更新**:更新了 Keras 2.0.2,TensorFlow 1.0.1 和 Theano 0.9.0 的示例。 * **2017 年 6 月更新**:更新了在輸出層使用 softmax 激活,更大隱藏層,默認權重初始化的示例。 ![Multi-Class Classification Tutorial with the Keras Deep Learning Library](https://img.kancloud.cn/9d/97/9d97c65789913b4d2b501fa6201cf098_640x427.png) Keras 深度學習庫的多類分類教程 [houroumono](https://www.flickr.com/photos/hourou/8922014724/) 的照片,保留一些權利。 ## 1.問題描述 在本教程中,我們將使用稱為[虹膜花數據集](http://archive.ics.uci.edu/ml/datasets/Iris)的標準機器學習問題。 這個數據集經過深入研究,是在神經網絡上實踐的一個很好的問題,因為所有 4 個輸入變量都是數字的,并且具有相同的厘米尺度。每個實例描述觀察到的花測量的屬性,輸出變量是特定的虹膜種類。 這是一個多類別的分類問題,意味著有兩個以上的類需要預測,實際上有三種花種。這是用神經網絡練習的一個重要問題類型,因為三個類值需要專門的處理。 虹膜花數據集是一個充分研究的問題,我們可以[期望在 95%至 97%的范圍內實現模型精度](http://www.is.umk.pl/projects/rules.html#Iris)。這為開發我們的模型提供了一個很好的目標。 您可以[從 UCI 機器學習庫下載虹膜花數據集](http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data),并將其放在當前工作目錄中,文件名為“ _iris.csv_ ”。 ## 2.導入類和函數 我們可以從導入本教程中需要的所有類和函數開始。 這包括我們需要 Keras 的功能,還包括 [pandas](http://pandas.pydata.org/) 的數據加載以及 [scikit-learn](http://scikit-learn.org/) 的數據準備和模型評估。 ```py import numpy import pandas from keras.models import Sequential from keras.layers import Dense from keras.wrappers.scikit_learn import KerasClassifier from keras.utils import np_utils from sklearn.model_selection import cross_val_score from sklearn.model_selection import KFold from sklearn.preprocessing import LabelEncoder from sklearn.pipeline import Pipeline ``` ## 3.初始化隨機數生成器 接下來,我們需要將隨機數生成器初始化為常量值(7)。 這對于確保我們可以再次精確地實現從該模型獲得的結果非常重要。它確保可以再現訓練神經網絡模型的隨機過程。 ```py # fix random seed for reproducibility seed = 7 numpy.random.seed(seed) ``` ## 4.加載數據集 可以直接加載數據集。因為輸出變量包含字符串,所以最簡單的方法是使用 pandas 加載數據。然后我們可以將屬性(列)拆分為輸入變量(X)和輸出變量(Y)。 ```py # load dataset dataframe = pandas.read_csv("iris.csv", header=None) dataset = dataframe.values X = dataset[:,0:4].astype(float) Y = dataset[:,4] ``` ## 5.編碼輸出變量 輸出變量包含三個不同的字符串值。 在使用神經網絡對多類分類問題進行建模時,最好將包含每個類值的值的向量的輸出屬性重新整形為一個矩陣,每個類值都有一個布爾值,以及給定的實例是否具有該值是否有類值。 這稱為[一個熱編碼](https://en.wikipedia.org/wiki/One-hot)或從分類變量創建虛擬變量。 例如,在這個問題中,三個類值是 Iris-setosa,Iris-versicolor 和 Iris-virginica。如果我們有觀察結果: ```py Iris-setosa Iris-versicolor Iris-virginica ``` 我們可以將其轉換為每個數據實例的單熱編碼二進制矩陣,如下所示: ```py Iris-setosa, Iris-versicolor, Iris-virginica 1, 0, 0 0, 1, 0 0, 0, 1 ``` 我們可以通過首先使用 scikit-learn 類 LabelEncoder 將字符串一致地編碼為整數來完成此操作。然后使用 Keras 函數 to_categorical()將整數向量轉換為一個熱編碼。 ```py # encode class values as integers encoder = LabelEncoder() encoder.fit(Y) encoded_Y = encoder.transform(Y) # convert integers to dummy variables (i.e. one hot encoded) dummy_y = np_utils.to_categorical(encoded_Y) ``` ## 6.定義神經網絡模型 Keras 庫提供了包裝類,允許您在 scikit-learn 中使用 Keras 開發的神經網絡模型。 Keras 中有一個 KerasClassifier 類,可以用作 scikit-learn 中的 Estimator,它是庫中基本類型的模型。 KerasClassifier 將函數的名稱作為參數。該函數必須返回構建的神經網絡模型,為訓練做好準備。 下面是一個函數,它將為虹膜分類問題創建一個基線神經網絡。它創建了一個簡單的完全連接的網絡,其中一個隱藏層包含 8 個神經元。 隱藏層使用整流器激活功能,這是一種很好的做法。因為我們對虹膜數據集使用了單熱編碼,所以輸出層必須創建 3 個輸出值,每個類一個。具有最大值的輸出值將被視為模型預測的類。 這個簡單的單層神經網絡的網絡拓撲可以概括為: ```py 4 inputs -> [8 hidden nodes] -> 3 outputs ``` 請注意,我們在輸出層使用“ _softmax_ ”激活功能。這是為了確保輸出值在 0 和 1 的范圍內,并且可以用作預測概率。 最后,網絡使用具有對數損失函數的高效 Adam 梯度下降優化算法,在 Keras 中稱為“ _categorical_crossentropy_ ”。 ```py # define baseline model def baseline_model(): # create model model = Sequential() model.add(Dense(8, input_dim=4, activation='relu')) model.add(Dense(3, activation='softmax')) # Compile model model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) return model ``` 我們現在可以創建我們的 KerasClassifier 用于 scikit-learn。 我們還可以在構造 KerasClassifier 類中傳遞參數,該類將傳遞給內部用于訓練神經網絡的 fit()函數。在這里,我們將時期數傳遞為 200,批量大小為 5,以便在訓練模型時使用。通過將 verbose 設置為 0,在訓練時也會關閉調試。 ```py estimator = KerasClassifier(build_fn=baseline_model, epochs=200, batch_size=5, verbose=0) ``` ## 7.使用 k-fold 交叉驗證評估模型 我們現在可以在訓練數據上評估神經網絡模型。 scikit-learn 具有使用一套技術評估模型的出色能力。評估機器學習模型的黃金標準是 k 折交叉驗證。 首先,我們可以定義模型評估程序。在這里,我們將折疊數設置為 10(一個很好的默認值)并在分區之前對數據進行洗牌。 ```py kfold = KFold(n_splits=10, shuffle=True, random_state=seed) ``` 現在我們可以使用 10 倍交叉驗證程序(kfold)在我們的數據集(X 和 dummy_y)上評估我們的模型(估計器)。 評估模型僅需要大約 10 秒鐘,并返回一個對象,該對象描述了對數據集的每個分割的 10 個構建模型的評估。 ```py results = cross_val_score(estimator, X, dummy_y, cv=kfold) print("Baseline: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) ``` 結果總結為數據集上模型精度的均值和標準差。這是對看不見的數據的模型表現的合理估計。對于這個問題,它也屬于已知的最佳結果范圍。 ```py Accuracy: 97.33% (4.42%) ``` ## 摘要 在這篇文章中,您發現了如何使用 Keras Python 庫開發和評估神經網絡以進行深度學習。 通過完成本教程,您了解到: * 如何加載數據并使其可用于 Keras。 * 如何使用一個熱編碼準備多類分類數據進行建模。 * 如何使用 Keras 神經網絡模型與 scikit-learn。 * 如何使用 Keras 定義神經網絡進行多類分類。 * 如何使用帶有 k-fold 交叉驗證的 scikit-learn 來評估 Keras 神經網絡模型 您對 Keras 或此帖的深度學習有任何疑問嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <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>

                              哎呀哎呀视频在线观看