使用R语言中的表格函数构建混淆矩阵

110 篇文章 ¥59.90 ¥99.00
本文介绍了如何在R语言中使用表格函数构建混淆矩阵,混淆矩阵是评估分类模型性能的关键工具。通过创建预测和实际标签向量,然后利用table函数生成矩阵,可以直观展示模型预测与实际结果的对应关系。混淆矩阵的输出有助于计算如准确率、召回率等指标,为模型优化提供依据。

使用R语言中的表格函数构建混淆矩阵

混淆矩阵(Confusion Matrix)是评估分类模型性能的重要工具。它展示了一个分类模型在测试数据集上的预测结果与实际标签之间的对应关系。在R语言中,我们可以使用表格函数(table)来构建混淆矩阵。

以下是一个使用R语言构建混淆矩阵的示例代码:

# 创建预测向量和实际标签向量
predicted <- c("A", "B", "A", "A", "B", "B")
actual <- c("A", "A", "B", "A", "B", "B")

# 使用表格函数创建混淆矩阵
confusion_matrix <- table(predicted, actual)

# 打印混淆矩阵
print(confusion_matrix)

在上面的代码中,我们首先创建了一个预测向量(predicted)和一个实际标签向量(actual)。这些向量中的元素对应于测试数据集中的样本。

接下来,我们使用表格函数(table)来创建混淆矩阵。表格函数接受两个向量作为输入,将它们的对应关系汇总到一个二维表格中。

最后,我们通过打印混淆矩阵来查看结果。混淆矩阵将以表格的形式输出,行表示预测的类别,列表示实际的类别。每个单元格中的值表示预测为对应类别的样本数量。

以下是上述代码的输出结果:

         actual
predicted A B
        A 2 1
        B 1 2

输出结果展示了一个2x2的混淆矩阵,其中行和列分别表示预测和实

好的,在Python中创建用于二分类任务的混淆矩阵是一个常见的需求,下面将向您介绍如何编写`confusion_matrix`函数。 ## 混淆矩阵简介 在机器学习领域特别是监督学习下的分类问题里,**混淆矩阵(Confusion Matrix)**是一种特定表格布局,它使得算法预测结果更清晰直观地呈现出来。对于二分类来说,这个矩阵包括四个主要元素: - **TP (True Positive)** - 实际上为正样本并且模型也正确识别为了正样本的数量; - **TN (True Negative)** - 实际上为负样本并且模型也正确归类到负样本的数量; - **FP (False Positive)** - 被错误地标记成正样本的实际负样本数(假阳性的例子); - **FN (False Negative)** - 真实情况属于正类别却被判定成了负类别的实例数目(即漏检的情况) ## Python实现 我们可以使用NumPy库轻松计算出这四个值,并返回它们组成的二维数组作为我们的输出形式之一。这里提供了一个简单的自定义版本: ```python import numpy as np def confusion_matrix(y_true, y_pred): """ 构建二分类混淆矩阵 参数: y_true -- ndarray 或 list 类型的真实标签序列 y_pred -- ndarray 或 list 类型的预测标签序列 返回: cmatrix -- shape=(2, 2) 的numpy.ndarray类型的混淆矩阵, 其结构如下所示: [[TN FP], [FN TP]] 注意事项: - 输入应只包含0和1两个整数值表示两类。 - 如果y_true和y_pred长度不一致,则会抛出异常ValueError. """ if len(y_true)!=len(y_pred): raise ValueError("真实标签列表与预测标签列表长度不符") # 将输入转换成ndarray并检查是否只有二进制值存在 yt = np.array(y_true) yp = np.array(y_pred) labels_set={0,1} if not set(np.unique(yt)).issubset(labels_set) or \ not set(np.unique(yp)).issubset(labels_set): raise ValueError("所有标签都应该是0或1") tn, fp, fn, tp=0, 0, 0, 0 for t,p in zip(yt, yp): if t==p==0 :tn+=1 # True Negatives elif t==p==1 :tp+=1 # True Positives elif t!=p and p==1:fp+=1 # False Positives else :fn+=1 # False Negatives return np.array([[tn, fp], [fn, tp]]) # 示例用法 if __name__ == "__main__": actuals=[0,1,0,0,1] predictions=[0,1,0,1,0] print(confusion_matrix(actuals,predictions)) ``` 此段代码首先验证了传入的数据有效性之后,遍历了一次给定的答案集以及对应的预测结果集合来进行计数统计;最终得到的结果按照[真阴性、假阳性],[假阴性、真正性]的方式组织在一个大小为2x2的numpy array当中返回给用户。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值