如何给预测模型配上一个混淆矩阵(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. 《回归:从入门到进阶》
公众号核心成员的成果发表
▌本文由R语言和统计首发
▌课程相关咨询可添加R师妹微信: kefu_rstats
▌编辑:June
▌邮箱:contact@rstats.cn
▌网站:www.rstats.cn
▌我们致力于让R语言和统计变得简单!