如何给预测模型配上一个混淆矩阵(Confusion Matrix)?附R代码!

小编最近的一个项目需要建立一个模型,它的结局变量是分类变量,如果希望使用混淆矩阵(Confusion Matrix)展示模型的表现能力,那该怎么办?


进入实战部分!


首先安装所需的R包:


install.packages("cvms")
install.packages(
"tibble")
library(cvms)
library(tibble)

R包get之后,进入下一步,创建数据集:


set.seed(123)
mydata <- data.frame(
  reference = rbinom(
100, 1, 0.65),
  prediction = rbinom(
100, 1, 0.55)
)

head(mydata,
10)


在上面的代码中,创建了两个分类变量,分别为reference以及prediction,分别代表真实值以及预测值。


下一步, 创建一个“朴素”版本的混淆矩阵表格: 


mytable <- table(mydata)
mytable


将上述表格转化成tibble的格式,如下:


mytibble <- as_tibble(mytable)
mytibble


在数据集中,有两个分类变量,每个变量有两个组别,因此就会有四个不同的组合(4行),第三个变量n指代每一种组合的样本量。


假设0指代阴性,1指代阳性的话,下方表格可以有助于理解: 


reference

prediction 

outcomes

0

0

True negative

0

1

False positive

1

0

False negative

1

1

True positive

下一步,就可以通过mytibble制作混淆矩阵了,代码如下: 


plot_confusion_matrix(mytibble,
                      target_col =
"reference",
                      prediction_col =
"prediction",
                      counts_col =
"n")


上述图片其实与mytable或mytibble的内容是一样的,只是使用不同的形式呈现。


下一步,增加数据的复杂程度,假设分类变量有四个组别,创建数据: 


set.seed(12)
mydata1 <- data.frame(
  reference = floor(runif(
200)*4),
  prediction = floor(runif(
200)*4)
)

head(mydata1)


下一步,创建mytibble1,并且进行作图: 


mytibble1<- as.tibble(table(mydata1))
mytibble1

# 制作混淆矩阵
plot_confusion_matrix(mytibble1,
                      target_col =
"reference",
                      prediction_col =
"prediction",
                      counts_col =
"n")


可以添加一栏,代表总和: 


plot_confusion_matrix(mytibble1,
                      target_col =
"reference",
                      prediction_col =
"prediction",
                      counts_col =
"n",
                      add_sums =
TRUE)


还可以修改一下颜色,代码如下: 


plot_confusion_matrix(mytibble1,
                      target_col =
"reference",
                      prediction_col =
"prediction",
                      counts_col =
"n",
                      add_sums =
TRUE,
                      palette =
"Purples")


好啦,今天的内容就到这里。如果有帮助,记得分享给需要的人


参考文献


https://cran.r-project.org/web/packages/cvms/

公众号的线上课程

1. 《R语言和统计新手课程》

2. 《回归:从入门到进阶》


公众号核心成员的成果发表

《SCI医学1区影响因子8.8分论文》


▌本文由R语言和统计首发

▌课程相关咨询可添加R师妹微信: kefu_rstats

▌编辑:June

▌邮箱:contact@rstats.cn

▌网站:www.rstats.cn

我们致力于让R语言和统计变得简单!




2023-04-06 16:26
首页    公众号    如何给预测模型配上一个混淆矩阵(Confusion Matrix)?附R代码!