」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 評估機器學習分類模型

評估機器學習分類模型

發佈於2024-11-05
瀏覽:870

大纲

  • 模型评估的目标是什么?
  • 模型评估的目的是什么,有哪些 常见的评估程序?
  • 分类准确率有什么用,它的作用是什么 限制?
  • 混淆矩阵如何描述一个 分类器?
  • 可以从混淆矩阵计算哪些指标?

T模型评估的目标是回答问题;

不同型号如何选择?

评估机器学习的过程有助于确定模型的应用可靠性和有效性。这涉及评估不同的因素,例如其性能、指标以及预测或决策的准确性。

无论您选择使用什么模型,您都需要一种在模型之间进行选择的方法:不同的模型类型、调整参数和功能。此外,您还需要模型评估程序来估计模型对未见过的数据的泛化能力。最后,您需要一个评估程序来与其他程序配合以量化您的模型性能。

在我们继续之前,让我们回顾一下一些不同的模型评估程序及其运作方式。

模型评估程序及其运作方式。

  1. 对相同数据进行训练和测试
    • 奖励过于复杂的模型,这些模型“过度拟合”训练数据并且不一定具有泛化能力
  2. 训练/测试分割
    • 将数据集分成两部分,以便模型可以在不同的数据上进行训练和测试
    • 更好地估计样本外表现,但仍然是“高方差”估计
    • 因其速度、简单性和灵活性而有用
  3. K 折交叉验证
    • 系统地创建“K”个训练/测试分组并将结果平均在一起
    • 更好地估计样本外表现
    • 运行速度比训练/测试拆分慢“K”倍。

从上面我们可以推断出:

  • 对相同数据进行训练和测试是过度拟合的一个典型原因,在这种情况下,您构建的模型过于复杂,无法泛化到新数据,而且实际上没有用。

  • Train_Test_Split 可以更好地估计样本外性能。

  • 通过系统地进行 K 次训练测试分割并将结果平均在一起,K 折交叉验证效果更好。

总而言之,train_tests_split 由于其速度和简单性,对于交叉验证来说仍然是有利可图的,这就是我们将在本教程中使用的内容。

模型评估指标:

您始终需要一个评估指标来配合您选择的程序,并且您对指标的选择取决于您要解决的问题。对于分类问题,可以使用分类精度。但我们将在本指南中重点关注其他重要的分类评估指标。

在我们学习任何新的评估指标之前'让我们回顾一下分类准确性,并讨论它的优点和缺点。

分类准确率

我们为本教程选择了 Pima Indians Diabetes 数据集,其中包括 768 名患者的健康数据和糖尿病状况。

Evaluating A Machine Learning Classification Model

让我们读取数据并打印前5行数据。如果患者患有糖尿病,则标签列表示为 1,如果患者没有患有糖尿病,则标签列表示为 0,我们要回答的问题是:

问题: 我们可以根据患者的健康测量结果预测其糖尿病状况吗?

我们定义特征度量 X 和响应向量 Y。我们使用 train_test_split 将 X 和 Y 分成训练集和测试集。

Evaluating A Machine Learning Classification Model

接下来,我们在训练集上训练逻辑回归模型。在拟合步骤中,logreg 模型对象正在学习 X_train 和 Y_train 之间的关系。最后我们对测试集进行类别预测。

Evaluating A Machine Learning Classification Model

Evaluating A Machine Learning Classification Model

现在,我们已经对测试集进行了预测,我们可以计算分类准确率,简单来说就是正确预测的百分比。

Evaluating A Machine Learning Classification Model

但是,每当您使用分类准确性作为评估指标时,将其与空准确性进行比较非常重要,后者是通过始终预测最频繁的类别可以获得的准确性。

Evaluating A Machine Learning Classification Model

空准确率回答了问题;如果我的模型能够 100% 地预测主要类别,那么它正确的概率是多少?在上面的场景中,y_test 的 32% 为 1(个)。换句话说,预测患者患有糖尿病的愚蠢模型的正确率是 68%(即零)。这提供了一个基线,我们可能希望根据该基线来衡量逻辑回归模型。

当我们比较 68% 的 Null 准确率和 69% 的模型准确率时,我们的模型看起来不太好。这表明分类准确性作为模型评估指标的一个弱点。分类准确性并不能告诉我们有关测试测试的基本分布的任何信息。

总之:

  • 分类准确率是最容易理解的分类指标
  • 但是,它不会告诉您响应值的潜在分布
  • 并且,它不会告诉您分类器正在产生什么“类型”错误

现在让我们看看混淆矩阵。

混淆矩阵

混淆矩阵是描述分类模型性能的表格。
它有助于帮助您了解分类器的性能,但它不是模型评估指标;所以你不能告诉 scikit learn 选择具有最佳混淆矩阵的模型。然而,有很多指标可以从混淆矩阵中计算出来,并且可以直接用于在模型之间进行选择。

Evaluating A Machine Learning Classification Model

  • 测试集中的每个观察结果都在恰好一个框中表示
  • 这是一个 2x2 矩阵,因为有 2 个响应类别
  • 此处显示的格式不是通用

让我们解释一下它的一些基本术语。

  • 真阳性(TP):我们正确预测他们确实患有糖尿病
  • 真阴性(TN):我们正确预测他们没有患有糖尿病
  • 误报 (FP):我们错误地预测他们确实患有糖尿病(“I 型错误”)
  • 假阴性(FN):我们错误地预测他们没有患有糖尿病(“II型错误”)

让我们看看如何计算指标

Evaluating A Machine Learning Classification Model

Evaluating A Machine Learning Classification Model

Evaluating A Machine Learning Classification Model

综上所述:

  • 混淆矩阵为您提供更完整的图片您的分类器的执行情况
  • 还允许您计算各种分类指标,这些指标可以指导您的模型选择
版本聲明 本文轉載於:https://dev.to/chris22ozor/evaluating-a-machine-learning-classification-model-4cd8?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 為什麼使用 + 對字串文字進行字串連接失敗?
    為什麼使用 + 對字串文字進行字串連接失敗?
    連接字串文字與字串在 C 中,運算子可用於連接字串和字串文字。但是,此功能存在限制,可能會導致混亂。 在問題中,作者嘗試連接字串文字「Hello」、「,world」和「!」以兩種不同的方式。第一個例子:const string hello = "Hello"; const str...
    程式設計 發佈於2024-11-05
  • React 重新渲染:最佳效能的最佳實踐
    React 重新渲染:最佳效能的最佳實踐
    React高效率的渲染機制是其受歡迎的關鍵原因之一。然而,隨著應用程式複雜性的增加,管理元件重新渲染對於最佳化效能變得至關重要。讓我們探索優化 React 渲染行為並避免不必要的重新渲染的最佳實踐。 1. 使用 React.memo() 作為函數式元件 React.memo() 是...
    程式設計 發佈於2024-11-05
  • 如何實作條件列建立:探索 Pandas DataFrame 中的 If-Elif-Else?
    如何實作條件列建立:探索 Pandas DataFrame 中的 If-Elif-Else?
    Creating a Conditional Column: If-Elif-Else in Pandas給定的問題要求將新列新增至DataFrame 中基於一系列條件標準。挑戰在於在實現這些條件的同時保持程式碼效率和可讀性。 使用函數應用程式的解決方案一種方法涉及創建一個將每一行映射到所需結果的函...
    程式設計 發佈於2024-11-05
  • 介紹邱!
    介紹邱!
    我很高興地宣布發布 Qiu – 一個嚴肅的 SQL 查詢運行器,旨在讓原始 SQL 再次變得有趣。老實說,ORM 有其用武之地,但當您只想編寫簡單的 SQL 時,它們可能會有點不知所措。我一直很喜歡寫原始 SQL 查詢,但我意識到我需要練習——大量的練習。這就是Qiu發揮作用的地方。 有了 Qiu...
    程式設計 發佈於2024-11-05
  • 為什麼 CSS 中的 Margin-Top 百分比是根據容器寬度計算的?
    為什麼 CSS 中的 Margin-Top 百分比是根據容器寬度計算的?
    CSS 中的 margin-top 百分比計算CSS 中的 margin-top 百分比計算當對元素應用 margin-top 百分比時,必須了解計算方式執行。與普遍的看法相反,邊距頂部百分比是根據包含塊的寬度而不是其高度來確定的。 W3C 規範解釋:W3C 規範解釋:根據W3C 規範,“百分比是根...
    程式設計 發佈於2024-11-05
  • 如何解決 CSS 轉換期間 Webkit 文字渲染不一致的問題?
    如何解決 CSS 轉換期間 Webkit 文字渲染不一致的問題?
    解決CSS 轉換期間的Webkit 文本渲染不一致在CSS 轉換期間,特別是縮放元素時,Webkit 中可能會出現文本渲染不一致的情況瀏覽器。這個問題源自於瀏覽器嘗試優化渲染效能。 一種解決方案是透過添加以下屬性來強制對過渡元素的父元素進行硬體加速:-webkit-transform: transl...
    程式設計 發佈於2024-11-05
  • 使用 Reactables 簡化 RxJS
    使用 Reactables 簡化 RxJS
    介紹 RxJS 是一個功能強大的庫,但眾所周知,它的學習曲線很陡峭。 這個函式庫龐大的 API 介面,再加上向反應式程式設計的典範轉移,可能會讓新手不知所措。 我創建了 Reactables API 來簡化 RxJS 的使用並簡化開發人員對反應式程式設計的介紹。 ...
    程式設計 發佈於2024-11-05
  • 如何在 Pandas 中找到多列的最大值?
    如何在 Pandas 中找到多列的最大值?
    找出 Pandas 中多列的最大值要確定 pandas DataFrame 中多列的最大值,可以採用多種方法。以下是實現此目的的方法:對指定列使用max() 函數此方法涉及明確選擇所需的列並應用max() 函數: df[["A", "B"]] df[[&quo...
    程式設計 發佈於2024-11-05
  • CI/CD 入門:自動化第一個管道的初學者指南(使用 Jenkins)
    CI/CD 入門:自動化第一個管道的初學者指南(使用 Jenkins)
    目錄 介紹 什麼是 CI/CD? 持續整合(CI) 持續交付(CD) 持續部署 CI/CD 的好處 更快的上市時間 提高程式碼品質 高效率協作 提高自動化程度和一致性 如何建立您的第一個 CI/CD 管道 第 1 步:設定版本控制 (GitHub) 步驟 2: 選擇 CI/CD ...
    程式設計 發佈於2024-11-05
  • TypeScript 如何讓 JavaScript 在大型專案中更加可靠。
    TypeScript 如何讓 JavaScript 在大型專案中更加可靠。
    介绍 JavaScript 广泛应用于 Web 开发,现在也被应用于不同行业的大型项目中。然而,随着这些项目的增长,管理 JavaScript 代码变得更加困难。数据类型不匹配、运行时意外错误以及代码不清晰等问题可能会导致查找和修复错误变得困难。 这就是TypeScript介入的地...
    程式設計 發佈於2024-11-05
  • 如何使用PHP的password_verify函數安全地驗證使用者密碼?
    如何使用PHP的password_verify函數安全地驗證使用者密碼?
    使用 PHP 解密加密密碼許多應用程式使用密碼雜湊等加密演算法安全地儲存使用者密碼。然而,在驗證登入嘗試時,將輸入密碼與加密的儲存版本進行比較非常重要。 加密問題password_hash 使用 Bcrypt,一元加密演算法方式雜湊演算法,表示加密的密碼無法逆轉或解密。這是一項安全功能,可確保即使資...
    程式設計 發佈於2024-11-05
  • 學習 Vue 部分 建立天氣應用程式
    學習 Vue 部分 建立天氣應用程式
    深入研究 Vue.js 就像在 DIY 工具包中發現了一個新的最喜歡的工具——直觀、靈活,而且功能強大得驚人。我接觸 Vue 的第一個副業專案是一個天氣應用程序,它教會了我很多關於框架功能以及一般 Web 開發的知識。這是我到目前為止所學到的。 1. Vue 入門:簡單與強大 Vu...
    程式設計 發佈於2024-11-05
  • NFT 預覽卡組件
    NFT 預覽卡組件
    ?剛剛完成了我的最新專案:使用 HTML 和 CSS 的「NFT 預覽卡元件」! ?查看並探索 GitHub 上的程式碼。歡迎反饋! ? GitHub:[https://github.com/khanimran17/NFT-preview-card-component] ?現場示範:[https:...
    程式設計 發佈於2024-11-05
  • Android 應用程式如何連接到 Microsoft SQL Server 2008?
    Android 應用程式如何連接到 Microsoft SQL Server 2008?
    將Android 應用程式連接到Microsoft SQL Server 2008Android 應用程式可以無縫連接到中央資料庫伺服器,包括Microsoft SQL Server 2008。這種連接允許開發人員從其行動應用程式存取和管理儲存在遠端伺服器上的資料。 連接方法雖然提供的範例程式碼專注...
    程式設計 發佈於2024-11-05
  • 以下是一些基於問題的標題選項,重點關注核心問題:

* C++ std::可選:為什麼沒有對引用類型進行專門化? (直接、切題)
* C++ std::option 中的參考類型
    以下是一些基於問題的標題選項,重點關注核心問題: * C++ std::可選:為什麼沒有對引用類型進行專門化? (直接、切題) * C++ std::option 中的參考類型
    C 中的可選:為什麼沒有專門化引用類型? 儘管在像 Boost 這樣的庫中存在對引用類型的專門化,C標準庫的 std::Optional 不提供這樣的功能。這項決定引發了對其理由和潛在替代機制的詢問。 遺漏背後的理由在討論 n3406(可選提案)期間,有人提出了擔憂關於包含可選參考文獻。認識到這些反...
    程式設計 發佈於2024-11-05

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3