<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 用于評估 Python 中機器學習算法的度量標準 > 原文: [https://machinelearningmastery.com/metrics-evaluate-machine-learning-algorithms-python/](https://machinelearningmastery.com/metrics-evaluate-machine-learning-algorithms-python/) 您選擇用于評估機器學習算法的指標非常重要。 度量的選擇會影響如何測量和比較機器學習算法的表現。它們會影響您如何權衡結果中不同特征的重要性以及您選擇哪種算法的最終選擇。 在本文中,您將了解如何使用 scikit-learn 在 Python 中選擇和使用不同的機器學習表現指標。 讓我們開始吧。 * **2017 年 1 月更新**:已更新,以反映版本 0.18 中 scikit-learn API 的更改。 * **更新 Mar / 2018** :添加了備用鏈接以下載數據集,因為原始圖像已被刪除。 ![Metrics To Evaluate Machine Learning Algorithms in Python](https://img.kancloud.cn/82/ff/82ff83804ac8d6b82941a9ae5acf2756_640x480.jpg) 用于評估 Python 中的機器學習算法的度量 照片由[FerrousBüller](https://www.flickr.com/photos/lumachrome/4898510377)拍攝,保留一些權利。 ## 關于秘籍 本文使用 Python 和 scikit-learn 中的小代碼秘籍演示了各種不同的機器學習評估指標。 每個秘籍都是獨立設計的,因此您可以將其復制并粘貼到項目中并立即使用。 針對分類和回歸類型的機器學習問題演示了度量標準。 * 對于分類指標, [Pima 印第安人糖尿病數據集](https://archive.ics.uci.edu/ml/datasets/Pima+Indians+Diabetes)的發病被用作示范。這是一個二元分類問題,其中所有輸入變量都是數字的(更新:[從這里下載](https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv))。 * 對于回歸指標, [Boston House Price 數據集](https://archive.ics.uci.edu/ml/datasets/Housing)用作演示。這是一個回歸問題,其中所有輸入變量也是數字的(更新:[從這里下載數據](https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.data))。 在每個秘籍中,數據集直接從 [UCI 機器學習庫](https://archive.ics.uci.edu/ml/index.html)下載。 所有秘籍都會評估相同的算法,分類的 Logistic 回歸和回歸問題的線性回歸。 10 倍交叉驗證測試工具用于演示每個指標,因為這是您將采用不同算法評估指標的最可能情況。 這些秘籍中的一個警告是 [cross_val_score](http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.cross_val_score.html) 函數用于報告每個秘籍中的表現。它允許使用將要討論的不同評分指標,但報告所有得分以便可以對它們進行排序升序(最高分是最好的)。 一些評估指標(如均方誤差)是自然下降的分數(最小分數最好),因此 _cross_val_score()_ 函數報告為負數。這一點很重要,因為有些分數會被報告為負數,根據定義,它們永遠不會是負數。 您可以在頁面上了解更多關于 scikit-learn 支持的機器學習算法表現指標[模型評估:量化預測質量](http://scikit-learn.org/stable/modules/model_evaluation.html)。 讓我們繼續評估指標。 ## 分類指標 分類問題可能是最常見的機器學習問題類型,因此有無數的度量標準可用于評估這些問題的預測。 在本節中,我們將介紹如何使用以下指標: 1. 分類準確性。 2. 對數損失。 3. ROC 曲線下面積。 4. 混亂矩陣。 5. 分類報告。 ### 1.分類準確性 分類準確度是作為所有預測的比率而作出的正確預測的數量。 這是分類問題最常見的評估指標,也是最被誤用的。它實際上只適用于每個類中存在相同數量的觀測值(這種情況很少發生)并且所有預測和預測誤差同樣重要,而事實并非如此。 以下是計算分類準確度的示例。 ``` # Cross Validation Classification Accuracy import pandas from sklearn import model_selection from sklearn.linear_model import LogisticRegression url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = pandas.read_csv(url, names=names) array = dataframe.values X = array[:,0:8] Y = array[:,8] seed = 7 kfold = model_selection.KFold(n_splits=10, random_state=seed) model = LogisticRegression() scoring = 'accuracy' results = model_selection.cross_val_score(model, X, Y, cv=kfold, scoring=scoring) print("Accuracy: %.3f (%.3f)") % (results.mean(), results.std()) ``` 您可以看到報告的比率。可以通過將該值乘以 100 將其轉換為百分比,從而使準確度得分大約為 77%。 ``` Accuracy: 0.770 (0.048) ``` ### 2.對數損失 對數損失(或 logloss)是用于評估給定類的成員概率的預測的表現度量。 0 和 1 之間的標量概率可以被視為算法預測的置信度的度量。正確或不正確的預測會與預測的置信度成比例地得到獎勵或懲罰。 您可以在分類維基百科文章的[損失函數中了解更多關于對數的信息。](https://en.wikipedia.org/wiki/Loss_functions_for_classification) 以下是計算 Pima Indians 糖尿病數據集開始時 Logistic 回歸預測的 logloss 的示例。 ``` # Cross Validation Classification LogLoss import pandas from sklearn import model_selection from sklearn.linear_model import LogisticRegression url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = pandas.read_csv(url, names=names) array = dataframe.values X = array[:,0:8] Y = array[:,8] seed = 7 kfold = model_selection.KFold(n_splits=10, random_state=seed) model = LogisticRegression() scoring = 'neg_log_loss' results = model_selection.cross_val_score(model, X, Y, cv=kfold, scoring=scoring) print("Logloss: %.3f (%.3f)") % (results.mean(), results.std()) ``` 較小的 logloss 更好,0 表示完美的 logloss。如上所述,當使用 _cross_val_score()_ 函數時,度量被反轉為上升。 ``` Logloss: -0.493 (0.047) ``` ### 3\. ROC 曲線下的面積 ROC 曲線下面積(或簡稱 AUC)是二元分類問題的表現指標。 AUC 代表模型區分正面和負面類別的能力。面積為 1.0 表示完美地預測所有預測的模型。 0.5 的面積表示隨機的模型。 [了解更多有關 ROC 的信息](http://machinelearningmastery.com/assessing-comparing-classifier-performance-roc-curves-2/)。 ROC 可以分解為敏感性和特異性。二元分類問題實際上是敏感性和特異性之間的權衡。 * 敏感度是真正的正面率,也稱為召回率。它是實際正確預測的正(第一)類的數字實例。 * 特異性也稱為真正的負面率。是負類(第二)類中實際預測的實例數是否正確。 您可以在維基百科頁面上了解有關 [ROC 的更多信息。](https://en.wikipedia.org/wiki/Receiver_operating_characteristic) 以下示例提供了計算 AUC 的演示。 ``` # Cross Validation Classification ROC AUC import pandas from sklearn import model_selection from sklearn.linear_model import LogisticRegression url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = pandas.read_csv(url, names=names) array = dataframe.values X = array[:,0:8] Y = array[:,8] seed = 7 kfold = model_selection.KFold(n_splits=10, random_state=seed) model = LogisticRegression() scoring = 'roc_auc' results = model_selection.cross_val_score(model, X, Y, cv=kfold, scoring=scoring) print("AUC: %.3f (%.3f)") % (results.mean(), results.std()) ``` 您可以看到 AUC 相對接近 1 且大于 0.5,這表明預測中有一些技巧。 ``` AUC: 0.824 (0.041) ``` ### 4.混淆矩陣 混淆矩陣是具有兩個或更多類的模型的準確性的便利表示。 該表提供了關于 x 軸的預測和 y 軸上的準確度結果。表格的單元格是機器學習算法所做的預測次數。 例如,機器學習算法可以預測 0 或 1,并且每個預測實際上可以是 0 或 1.對于 0 實際為 0 的預測出現在用于預測= 0 和實際= 0 的單元格中,而對于 0 的預測是 0 實際上 1 出現在單元格中,用于預測= 0 和實際= 1。等等。 您可以在維基百科文章上了解有關[混淆矩陣的更多信息。](https://en.wikipedia.org/wiki/Confusion_matrix) 下面是通過測試集上的模型計算一組預測的混淆矩陣的示例。 ``` # Cross Validation Classification Confusion Matrix import pandas from sklearn import model_selection from sklearn.linear_model import LogisticRegression from sklearn.metrics import confusion_matrix url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = pandas.read_csv(url, names=names) array = dataframe.values X = array[:,0:8] Y = array[:,8] test_size = 0.33 seed = 7 X_train, X_test, Y_train, Y_test = model_selection.train_test_split(X, Y, test_size=test_size, random_state=seed) model = LogisticRegression() model.fit(X_train, Y_train) predicted = model.predict(X_test) matrix = confusion_matrix(Y_test, predicted) print(matrix) ``` 雖然陣列的打印沒有標題,但您可以看到大多數預測都落在矩陣的對角線上(這是正確的預測)。 ``` [[141 21] [ 41 51]] ``` ### 5.分類報告 在處理分類問題時,Scikit-learn 確實提供了便利報告,使您可以使用多種方法快速了解模型的準確性。 _classification_report()_ 函數顯示每個類的精度,召回率,f1 分數和支持。 下面的示例演示了有關二元分類問題的報告。 ``` # Cross Validation Classification Report import pandas from sklearn import model_selection from sklearn.linear_model import LogisticRegression from sklearn.metrics import classification_report url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = pandas.read_csv(url, names=names) array = dataframe.values X = array[:,0:8] Y = array[:,8] test_size = 0.33 seed = 7 X_train, X_test, Y_train, Y_test = model_selection.train_test_split(X, Y, test_size=test_size, random_state=seed) model = LogisticRegression() model.fit(X_train, Y_train) predicted = model.predict(X_test) report = classification_report(Y_test, predicted) print(report) ``` 您可以看到該算法的良好預測和召回。 ``` precision recall f1-score support 0.0 0.77 0.87 0.82 162 1.0 0.71 0.55 0.62 92 avg / total 0.75 0.76 0.75 254 ``` ## 回歸指標 在本節中,將回顧 3 個用于評估回歸機器學習問題預測的最常用指標: 1. 平均絕對誤差。 2. 均方誤差。 3. R ^ 2。 ### 1.平均絕對誤差 平均絕對誤差(或 MAE)是預測值與實際值之間的絕對差值之和。它給出了預測錯誤的概念。 該度量給出了誤差幅度的概念,但不知道方向(例如,過度或低于預測)。 您可以在 Wikipedia 上了解有關[平均絕對誤差的更多信息。](https://en.wikipedia.org/wiki/Mean_absolute_error) 以下示例演示了計算波士頓房價數據集的平均絕對誤差。 ``` # Cross Validation Regression MAE import pandas from sklearn import model_selection from sklearn.linear_model import LinearRegression url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.data" names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV'] dataframe = pandas.read_csv(url, delim_whitespace=True, names=names) array = dataframe.values X = array[:,0:13] Y = array[:,13] seed = 7 kfold = model_selection.KFold(n_splits=10, random_state=seed) model = LinearRegression() scoring = 'neg_mean_absolute_error' results = model_selection.cross_val_score(model, X, Y, cv=kfold, scoring=scoring) print("MAE: %.3f (%.3f)") % (results.mean(), results.std()) ``` 值 0 表示沒有錯誤或完美預測。與 logloss 一樣,該指標由 _cross_val_score()_ 函數反轉。 ``` MAE: -4.005 (2.084) ``` ### 2.均方誤差 均方誤差(或 MSE)非常類似于平均絕對誤差,因為它提供了誤差幅度的總體思路。 取均方誤差的平方根將單位轉換回輸出變量的原始單位,對描述和表示有意義。這稱為均方根誤差(或均方根)。 您可以在維基百科上了解有關[均方誤差的更多信息。](https://en.wikipedia.org/wiki/Mean_squared_error) 以下示例提供了計算均方誤差的演示。 ``` # Cross Validation Regression MSE import pandas from sklearn import model_selection from sklearn.linear_model import LinearRegression url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.data" names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV'] dataframe = pandas.read_csv(url, delim_whitespace=True, names=names) array = dataframe.values X = array[:,0:13] Y = array[:,13] seed = 7 kfold = model_selection.KFold(n_splits=10, random_state=seed) model = LinearRegression() scoring = 'neg_mean_squared_error' results = model_selection.cross_val_score(model, X, Y, cv=kfold, scoring=scoring) print("MSE: %.3f (%.3f)") % (results.mean(), results.std()) ``` 此度量標準也被反轉,因此結果會增加。如果您有興趣計算 RMSE,請記住在取平方根之前取絕對值。 ``` MSE: -34.705 (45.574) ``` ### 3\. R ^ 2 公制 R ^ 2(或 R Squared)度量提供了一組預測與實際值的擬合優度的指示。在統計文獻中,該度量被稱為確定系數。 對于不適合和完美貼合,這是 0 到 1 之間的值。 您可以在維基百科上了解更多關于[決定系數的文章。](https://en.wikipedia.org/wiki/Coefficient_of_determination) 下面的示例提供了計算一組預測的平均 R ^ 2 的演示。 ``` # Cross Validation Regression R^2 import pandas from sklearn import model_selection from sklearn.linear_model import LinearRegression url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.data" names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV'] dataframe = pandas.read_csv(url, delim_whitespace=True, names=names) array = dataframe.values X = array[:,0:13] Y = array[:,13] seed = 7 kfold = model_selection.KFold(n_splits=10, random_state=seed) model = LinearRegression() scoring = 'r2' results = model_selection.cross_val_score(model, X, Y, cv=kfold, scoring=scoring) print("R^2: %.3f (%.3f)") % (results.mean(), results.std()) ``` 您可以看到預測與實際值的擬合度較差,其值接近零且小于 0.5。 ``` R^2: 0.203 (0.595) ``` ## 摘要 在這篇文章中,您發現了可用于評估機器學習算法的指標。 您了解了 3 個分類指標: * 準確性。 * 對數損失。 * ROC 曲線下面積。 另外 2 種分類預測結果的便捷方法: * 混亂矩陣。 * 分類報告。 和 3 個回歸指標: * 平均絕對誤差。 * 均方誤差。 * R ^ 2。 您對評估機器學習算法或此帖子的指標有任何疑問嗎?在評論中提出您的問題,我會盡力回答。
                  <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>

                              哎呀哎呀视频在线观看