<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國際加速解決方案。 廣告
                # 什么是機器學習中的混淆矩陣 > 原文: [https://machinelearningmastery.com/confusion-matrix-machine-learning/](https://machinelearningmastery.com/confusion-matrix-machine-learning/) ### 使混淆矩陣更容易混淆。 混淆矩陣是用于總結分類算法的表現的技術。 如果每個類中的觀察數量不等,或者數據集中有兩個以上的類,則單獨的分類準確性可能會產生誤導。 計算混淆矩陣可以讓您更好地了解分類模型的正確性以及它所犯的錯誤類型。 在這篇文章中,您將發現用于機器學習的混淆矩陣。 閱讀這篇文章后你會知道: * 混淆矩陣是什么以及為什么需要使用它。 * 如何從頭開始計算2類分類問題的混淆矩陣。 * 如何在Weka,Python和R中創建混淆矩陣 讓我們開始吧。 * **2017年10月更新**:修復了工作示例中的一個小錯誤(感謝Raktim)。 * **2017年12月更新**:修正了準確度計算中的一個小錯誤(感謝Robson Pastor Alexandre) ![What is a Confusion Matrix in Machine Learning](img/302dba7f39692ffff7955a0cd5b7d149.jpg) 什么是機器學習中的混淆矩陣 攝影: [Maximiliano](https://www.flickr.com/photos/agent1994/5062439082/) Kolus,保留一些權利 ## 分類準確性及其局限性 分類準確性是正確預測與總預測的比率。 ```py classification accuracy = correct predictions / total predictions ``` 它通常通過將結果乘以100來表示為百分比。 ```py classification accuracy = correct predictions / total predictions * 100 ``` 通過反轉該值,分類精度也可以很容易地轉換為錯誤分類率或錯誤率,例如: ```py error rate = (1 - (correct predictions / total predictions)) * 100 ``` 分類準確性是一個很好的起點,但在實踐中經常會遇到問題。 分類準確性的主要問題在于它隱藏了您需要的細節,以便更好地理解分類模型的表現。有兩個例子,您最有可能遇到此問題: 1. 當你的數據有2個以上的類。對于3個或更多類,您可以獲得80%的分類準確度,但是您不知道是否因為所有類都被預測得同樣好,或者模型是否忽略了一個或兩個類。 2. 當您的數據沒有偶數個類時。您可以達到90%或更高的準確度,但如果每100個記錄中有90個記錄屬于一個類別,則這不是一個好分數,您可以通過始終預測最常見的類值來達到此分數。 分類準確性可以隱藏診斷模型表現所需的詳細信息。但幸運的是,我們可以通過混淆矩陣來區分這些細節。 ## 什么是混淆矩陣? 混淆矩陣是對分類問題的預測結果的總結。 使用計數值匯總正確和不正確預測的數量,并按每個類進行細分。這是混淆矩陣的關鍵。 **混淆矩陣顯示了分類模型 在進行預測時的混淆方式。** 它不僅可以讓您了解分類器所犯的錯誤,更重要的是可以了解正在進行的錯誤類型。 正是這種分解克服了僅使用分類精度的限制。 ### 如何計算混淆矩陣 以下是計算混淆矩陣的過程。 1. 您需要具有預期結果值的測試數據集或驗證數據集。 2. 對測試數據集中的每一行進行預測。 3. 從預期結果和預測計數: 1. 每個班級的正確預測數量。 2. 每個類的錯誤預測數,由預測的類組織。 然后將這些數字組織成表格或矩陣,如下所示: * **預期在一邊**:矩陣的每一行對應一個預測的類。 * **在頂部預測**:矩陣的每一列對應一個實際的類。 然后將正確和不正確分類的計數填入表中。 類的正確預測總數將進入該類值的預期行和該類值的預測列。 同樣,類的錯誤預測總數將進入該類值的預期行和該類值的預測列。 > 在實踐中,諸如此類的二元分類器可以產生兩種類型的錯誤:它可能錯誤地分配默認為無默認類別的個人,或者它可能錯誤地將未默認的個人分配給默認類別。通常有興趣確定正在進行這兩種類型的錯誤中的哪一種。混淆矩陣[...]是顯示此信息的便捷方式。 - 第145頁,[統計學習導論:應用于R](http://www.amazon.com/dp/1461471370?tag=inspiredalgor-20) ,2014年 該矩陣可用于易于理解的2類問題,但通過向混淆矩陣添加更多行和列,可輕松應用于具有3個或更多類值的問題。 讓我們通過一個例子來解釋創建混淆矩陣。 ## 2級混淆矩陣案例研究 讓我們假設我們有一個兩級分類問題,即預測照片是否包含男人或女人。 我們有一個包含10個記錄的測試數據集,其中包含預期結果和一組來自我們的分類算法的預測。 ```py Expected, Predicted man, woman man, man woman, woman man, man woman, man woman, woman woman, woman man, man man, woman woman, woman ``` 讓我們開始并計算這組預測的分類準確性。 該算法使10個預測中的7個正確,準確度為70%。 ```py accuracy = total correct predictions / total predictions made * 100 accuracy = 7 / 10 * 100 ``` 但是犯了什么類型的錯誤? 讓我們把結果變成混淆矩陣。 首先,我們必須計算每個類的正確預測數。 ```py men classified as men: 3 women classified as women: 4 ``` 現在,我們可以計算每個類的錯誤預測數量,按預測值組織。 ```py men classified as women: 2 woman classified as men: 1 ``` 我們現在可以將這些值安排到2級混淆矩陣中: ```py men women men 3 1 women 2 4 ``` 我們可以從這張桌子上學到很多東西。 * 數據集中的實際總人數是men列(3 + 2)上的值的總和 * 數據集中的實際女性總數是女性專欄中的值總和(1 + 4)。 * 正確的值組織在矩陣的左上角到右下角的對角線中(3 + 4)。 * 通過預測男性為女性比預測女性為男性更多的錯誤。 ### 兩類問題很特殊 在一個兩類問題中,我們經常尋求從正常觀察中區分具有特定結果的觀察結果。 如疾病狀態或事件,無疾病狀態或無事件。 這樣,我們可以將事件行分配為“_正_”,將無事件行分配為“_負_”。然后我們可以將預測的事件列分配為“ _true_ ”,將無事件分配為“ _false_ ”。 這給了我們: * “**真陽性**”用于正確預測的事件值。 * “**誤報**”表示錯誤預測的事件值。 * “**真陰性**”用于正確預測的無事件值。 * “**誤報**”表示錯誤預測的無事件值。 我們可以在混淆矩陣中總結如下: ```py event no-event event true positive false positive no-event false negative true negative ``` 這有助于計算更高級的分類指標,例如分類器的精確度,召回率,特異性和靈敏度。 例如,分類準確度計算為真陽性+真陰性。 > 考慮有兩個類的情況。 [...]表格的第一行對應于預測為事件的樣本。有些是正確預測的(真正的陽性或TP),而其他的則被錯誤地分類(假陽性或FP)。類似地,第二行包含具有真陰性(TN)和假陰性(FN)的預測陰性。 - 第256頁, [Applied Predictive Modeling](http://www.amazon.com/dp/1461468485?tag=inspiredalgor-20) ,2013 現在我們已經完成了一個簡單的2級混淆矩陣案例研究,讓我們看看如何在現代機器學習工具中計算混淆矩陣。 ## 混淆矩陣的代碼示例 本節提供了使用頂級機器學習平臺的混淆矩陣的一些示例。 這些示例將為您提供有關混淆矩陣的內容的背景信息,以便您在實踐中使用實際數據和工具。 ### Weka中的混淆矩陣示例 在Explorer界面中估計模型的技能時,Weka機器學習工作臺將自動顯示混淆矩陣。 下面是在Pima Indians Diabetes數據集上訓練k-最近鄰算法后,來自Weka Explorer界面的屏幕截圖。 混淆矩陣列在底部,您可以看到還提供了大量的分類統計數據。 混淆矩陣將字母a和b分配給類值,并為行提供預期的類值,并為每列提供預測的類值(“分類為”)。 ![Weka Confusion Matrix and Classification Statistics](img/dbfc8aead6f4b4b654b52d9bc9a47e20.jpg) Weka混淆矩陣和分類統計 您可以在此處了解有關 [Weka機器學習工作臺的更多信息](http://machinelearningmastery.com/applied-machine-learning-weka-mini-course/)。 ### 使用scikit-learn在Python中的示例混淆矩陣 Python中用于機器學習的scikit-learn庫可以計算混淆矩陣。 給定一個預期值的數組或列表以及機器學習模型中的預測列表,confusion_matrix()函數將計算混淆矩陣并將結果作為數組返回。然后,您可以打印此數組并解釋結果。 ```py # Example of a confusion matrix in Python from sklearn.metrics import confusion_matrix expected = [1, 1, 0, 1, 0, 0, 1, 0, 0, 0] predicted = [1, 0, 0, 1, 0, 0, 1, 1, 1, 0] results = confusion_matrix(expected, predicted) print(results) ``` 運行此示例打印混淆矩陣數組,總結設計的2類問題的結果。 ```py [[4 2] [1 3]] ``` 在scikit-learn API文檔中了解有關 [confusion_matrix()函數的更多信息。](http://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html) ### R中帶有插入符號的示例混淆矩陣 R中用于機器學習的插入符號庫可以計算混淆矩陣。 給定預期值列表和機器學習模型中的預測列表,confusionMatrix()函數將計算混淆矩陣并將結果作為詳細報告返回。然后,您可以打印此報告并解釋結果。 ```py # example of a confusion matrix in R library(caret) expected <- factor(c(1, 1, 0, 1, 0, 0, 1, 0, 0, 0)) predicted <- factor(c(1, 0, 0, 1, 0, 0, 1, 1, 1, 0)) results <- confusionMatrix(data=predicted, reference=expected) print(results) ``` 運行此示例計算混淆矩陣報告和相關統計信息并打印結果。 ```py Confusion Matrix and Statistics Reference Prediction 0 1 0 4 1 1 2 3 Accuracy : 0.7 95% CI : (0.3475, 0.9333) No Information Rate : 0.6 P-Value [Acc > NIR] : 0.3823 Kappa : 0.4 Mcnemar's Test P-Value : 1.0000 Sensitivity : 0.6667 Specificity : 0.7500 Pos Pred Value : 0.8000 Neg Pred Value : 0.6000 Prevalence : 0.6000 Detection Rate : 0.4000 Detection Prevalence : 0.5000 Balanced Accuracy : 0.7083 'Positive' Class : 0 ``` 本報告中有大量信息,尤其是混淆矩陣本身。 了解更多關于插入符號API文檔 [PDF]中 [confusionMatrix()函數的信息。](ftp://cran.r-project.org/pub/R/web/packages/caret/caret.pdf) ## 進一步閱讀 關于混淆矩陣的內容并不多,但本節列出了一些您可能有興趣閱讀的其他資源。 * 維基百科上的[混淆矩陣](https://en.wikipedia.org/wiki/Confusion_matrix) * [混淆矩陣術語的簡單指南](http://www.dataschool.io/simple-guide-to-confusion-matrix-terminology/) * [混淆矩陣在線計算器](http://www.marcovanetti.com/pages/cfmatrix/) ## 摘要 在這篇文章中,您發現了機器學習的混淆矩陣。 具體來說,您了解到: * 分類準確性的局限性以及何時可以隱藏重要細節。 * 混淆矩陣以及如何從頭開始計算并解釋結果。 * 如何使用Weka,Python scikit-learn和R插入庫來計算混淆矩陣。 **你有什么問題嗎?** 在下面的評論中提出您的問題,我會盡力回答。
                  <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>

                              哎呀哎呀视频在线观看