我正在适配多项式逻辑回归模型,并希望获取混淆矩阵以获得准确性。
library("glmnet")
x=data.matrix(train[-1])
y= data.matrix(train[1])
x_test=data.matrix(test[-1])
y_test=unlist(test[1])
fit.glm=glmnet(x,y,family="multinomial",alpha = 1, type.multinomial = "grouped")
cvfit=cv.glmnet(x, y, family="multinomial", type.multinomial = "grouped", parallel = TRUE)
y_predict=unlist(predict(cvfit, newx = x_test, s = "lambda.min", type = "class"))
然后我使用caret库来计算混淆矩阵
library("lattice")
library("ggplot2")
library("caret")
confusionMatrix(data=y_predict,reference=y_test)
我遇到了一个错误,但不知道如何解决:
Error in confusionMatrix.default(data = y_predict, reference = y_test) : 数据必须包含与参考数据重叠的某些级别。
这是我的 y_predict
和 y_test
的 str。它们可能有所帮助。
str(y_predict)
chr [1:301, 1] "6" "2" "7" "9" "3" "2" "3" "6" "6" "8" "6" "5" "6" ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr "1"
str(y_test)
Factor w/ 10 levels "accessory","activation",..: 6 8 2 9 3 2 3 5 10 8 ...
- attr(*, "names")= chr [1:301] "category1" "category2" "category3" "category4" ...
我使用
unlist
来避免出现这个错误:Error: x must be atomic for 'sort.list'。