Hi Everyone,
In follow up to my previous question, I wrote some code that correctly makes a
confusion matrix as I need it. However, it only works when the numbers are
between 1 and n. If the possible outcomes are between 0 and n, then I can't
reference row "0" of the matrix and the code breaks. Does anyone have any easy
fixes for this? I've attached the entire code to this email.
As always, thank you for your help!
Greg
Code:
answers<-matrix(c(4,2,1,3,2,1),nrow =6)
mat1<- matrix(c(3,3,4,NA,4,2),nrow = 6)
mat2<-matrix(c(3,2,1,4,2,3),nrow = 6)
mat3<-matrix(c(4,2,2,2,1,1),nrow = 6)
mat4<-matrix(c(4,2,1,3,1,4),nrow = 6)
mat5<-matrix(c(2,3,1,4,2,3),nrow = 6)
matrixlist<- list(mat1,mat2,mat3,mat4,mat5)
predicted.values<- matrix(unlist(matrixlist),nrow = dim(mat1)[1])
confusion.matrix<-matrix(0, nrow = length(as.vector(unique(answers))),ncol =
length(as.vector(unique(answers))))
for(i in 1:dim(predicted.values)[1]){
for(j in 1: dim(predicted.values)[2]){
predicted.value<- predicted.values[i,j]
if(!is.na(predicted.value)){
true.value<- answers[i,]
confusion.matrix[true.value, predicted.value] <-
confusion.matrix[true.value,predicted.value]+1
}
}
}
class.error<- diag(1- prop.table(confusion.matrix,1))
confusion.matrix<-cbind(confusion.matrix,class.error)
confusion.data.frame<-as.data.frame(confusion.matrix)
names(confusion.data.frame)[1:length(as.vector(unique(answers)))]<-
1:length(as.vector(unique(answers)))
names(confusion.data.frame)[length(as.vector(unique(answers)))+1]<-
"class.error"
[[alternative HTML version deleted]]
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.