Python混淆矩阵用例

136 篇文章 14 订阅

📜用例

  1. 📜Python社群纽带关系谱和图神经 | 📜多标签混淆矩阵模型 | 📜二元分类分层混淆矩阵模型 | 📜混淆矩阵评估特征归因

✒️梗概

混淆矩阵是评估分类模型性能的有用工具。 该矩阵通过将预测值与实际值进行比较,可以深入了解模型对数据进行分类的程度。 理解和解释混淆矩阵可能具有挑战性,特别是对于机器学习的初学者来说。 然而,理解每个单元代表的内容至关重要,因为它可以帮助您评估模型的优点和缺点。

我们将使用 Python 中的 Scikit-learn 库深入讨论混淆矩阵。 我们将带您了解混淆矩阵到底是什么、为什么它很重要以及如何有效地解释其结果。 此外,我们将引导您构建一个简单的机器学习模型,作为示例,该模型根据花卉的测量值对花卉种类进行分类。

混淆矩阵是用于评估机器学习算法性能的表格。它显示了算法在每个类别中正确或错误分类的样本数量。混淆矩阵有两个维度:实际维度和预测维度。在二元分类中,只有两个类(正类和负类),它看起来像这样:
 Predicted Positive   Predicted Negative   Actual Positive   True Positive (TP)   False Negative (FN)   Actual Negative   False Positive (FP)   True Negative (TN)  \begin{array}{|l|c|l|} \hline & \text { Predicted Positive } & \text { Predicted Negative } \\ \hline \text { Actual Positive } & \text { True Positive (TP) } & \text { False Negative (FN) } \\ \hline \text { Actual Negative } & \text { False Positive (FP) } & \text { True Negative (TN) } \\ \hline \end{array}  Actual Positive  Actual Negative  Predicted Positive  True Positive (TP)  False Positive (FP)  Predicted Negative  False Negative (FN)  True Negative (TN) 
让我们考虑一个二元分类问题,其中有两个类:“正”和“负”。

  • 真正例(TP):这是指模型在实际情况下正确预测实例属于正类。换句话说,TP是指被模型正确预测为正例的正例实例的数量。
  • 真负例(TN):这是指模型在实际情况下正确预测实例属于负类。换句话说,TN是指被模型正确预测为负例的负例数量。
  • 假负例(FP):这是指模型错误地预测某个实例属于正类,而实际上它属于负类。 换句话说,FP指的是被模型错误预测为正例的负例的数量。
  • 假负例(FN):这是指模型错误地预测某个实例属于负类,而实际上它属于正类。 换句话说,FN 指的是被模型错误预测为负例的正例数量。

混淆矩阵是机器学习中评估分类模型性能的常用工具。以下是一些现实世界或业务用例,混淆矩阵可能会有所帮助:

  • 欺诈检测:银行使用机器学习模型来识别欺诈交易。 混淆矩阵通过显示真阳性、真阴性、假阳性和假阴性的数量,帮助银行了解模型的执行情况
  • 医疗诊断:医院使用机器学习模型来诊断患有某种疾病的患者。 混淆矩阵通过显示真阳性、真阴性、假阳性和假阴性的数量,帮助医生了解模型的准确性。
  • 客户流失预测:公司使用机器学习模型来预测哪些客户可能会流失(停止使用他们的服务)。 混淆矩阵通过显示真阳性、真阴性、假阳性和假阴性的数量,帮助公司了解模型的表现如何。
  • 情绪分析:社交媒体平台使用机器学习模型来分析用户评论并确定它们是正面还是负面。 混淆矩阵通过显示真阳性、真阴性、假阳性和假阴性的数量,帮助平台了解模型的准确性。
  • 图像分类:电子商务网站使用机器学习模型自动将产品图像分类为不同类别,例如服装或电子产品。 混淆矩阵通过显示每个类别的真阳性、真阴性、假阳性和假阴性的数量,帮助他们了解图像分类算法的执行情况。

让我们看一个对 Scikit-Learn 的乳腺癌数据集进行二元分类的示例。

from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix

data = load_breast_cancer()

X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, random_state=0)

model = LogisticRegression()
model.fit(X_train, y_train)

y_pred = model.predict(X_test)

cm = confusion_matrix(y_test, y_pred)

print("Confusion Matrix:")
print(cm)

使用Scikit-Learn中的confusion_matrix只会显示混淆矩阵的Numpy数组,但如果想绘制它,我们可以使用Scikit-Learn中的plot_confusion_matrix函数,如下所示:

from sklearn.metrics import plot_confusion_matrix
plot_confusion_matrix(model, X_test, y_test)

这将使用 Matplotlib 输出混淆矩阵图:

现在让我们探讨一个使用多个类(而不仅仅是 2 个二元类)的混淆矩阵的示例。

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix, plot_confusion_matrix
from sklearn.tree import DecisionTreeClassifier
import matplotlib.pyplot as plt

iris = load_iris()
X = iris.data
y = iris.target

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)

y_pred = clf.predict(X_test)

cm = confusion_matrix(y_test, y_pred)
plot_confusion_matrix(clf, X_test, y_test)  

行代表真实类别,列代表预测类别。 对角线元素(从左上到右下)显示每个类别的正确预测数量。 非对角线元素显示错误分类。 例如,在我们的例子中,我们可以看到 0 类的 15 个样本被正确预测,没有错误,但是我们可以看到 1 类有两个错误分类为 2 类。

参阅:亚图跨际

  • 12
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python接口测试用例是用Python编写的用于测试接口功能和性能的代码。它使用unittest测试框架来组织和运行测试用例。一个简单的Python接口测试用例的示例代码如下: ```python import requests import unittest class APITestCase(unittest.TestCase): def setUp(self): # 设置测试的URL和参数 self.url = "http://example.com/api" self.params = {"param1": "value1", "param2": "value2"} def test_api(self): # 发送请求 response = requests.get(self.url, params=self.params) # 断言响应状态码是否为200 self.assertEqual(response.status_code, 200) # 断言响应内容是否符合预期 self.assertIn("expected_value", response.text) def tearDown(self): # 清理测试环境 pass if __name__ == '__main__': unittest.main() ``` 在这个示例中,我们使用unittest框架创建了一个继承自unittest.TestCase的测试类。在setUp方法中设置了测试的URL和参数,在test_api方法中发送请求并对响应进行断言。最后,在tearDown方法中可以进行一些清理操作。通过运行`unittest.main()`来执行测试用例。 这只是一个简单的示例,实际的接口测试用例可能会更加复杂,需要根据具体的业务需求和测试需求进行设计。可以根据接口的输入、输出、边界条件、异常情况等因素来编写更全面的测试用例。 #### 引用[.reference_title] - *1* [python简单的接口测试实例](https://blog.csdn.net/a836586387/article/details/90713450)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [python接口自动化之接口测试用例(详解)](https://blog.csdn.net/nhb687095/article/details/129879852)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值