sjd*_*jdh 4 r confusion-matrix
假设我有一个y具有n个级别的因子变量,我可以获得预测和实际结果.如何构建混淆矩阵?
set.seed(12345)
y_actual = as.factor(sample(c('A','B', 'C', 'D', 'E'), 100, replace = TRUE))
set.seed(12346)
y_predict = as.factor(sample(c('A','B', 'C', 'D', 'E'), 100, replace = TRUE))
Run Code Online (Sandbox Code Playgroud)
对于n = 2的情况,已经回答了这个问题
我尝试了什么
这是我得到了多远
ones = data.frame(total = rep(1,100));
confusion = aggregate(ones, list(Prediction = predict, Reality = real), sum, a.action=0)
confusion
Prediction Reality total
1 A A 12
2 B A 5
3 C A 15
4 A B 15
5 B B 7
6 C B 8
7 A C 12
8 B C 16
9 C C 10
Run Code Online (Sandbox Code Playgroud)
现在必须将其带入矩阵的形状.
背景
混淆矩阵具有水平标签"实际类"和垂直标签"预测类".矩阵元素简单地计算如下:
element(1,1)=实际类的计数数是A,预测类是A.
element(1,2)=实际类的计数数是A,预测类是B.
等等
只需使用confusionMatrix包装插入物
require(caret)
confusionMatrix(y_actual, y_predict)
Reference
Prediction A B C
A 12 5 15
B 15 7 8
C 12 16 10
Run Code Online (Sandbox Code Playgroud)
你应该能够做你想做的事table:
table(y_actual, y_predict)
# y_predict
# y_actual A B C D E
# A 4 3 4 2 8
# B 7 1 3 6 2
# C 3 7 1 0 4
# D 3 6 6 4 6
# E 6 5 5 1 3
Run Code Online (Sandbox Code Playgroud)