我正在构建一个惩罚多项式逻辑回归,但我很难想出一种简单的方法来获得预测准确性。这是我的代码:
fit.ridge.cv <- cv.glmnet(train[,-1], train[,1], type.measure="mse", alpha=0,
family="multinomial")
fit.ridge.best <- glmnet(train[,-1], train[,1], family = "multinomial", alpha = 0,
lambda = fit.ridge.cv$lambda.min)
fit.ridge.pred <- predict(fit.ridge.best, test[,-1], type = "response")
我的测试数据的第一列是响应变量,它有 4 个类别。如果我看一下结果(fit.ridge.pred(,它看起来像这样:
1,2,3,4
0.8743061353, 0.0122328811, 0.004798154, 0.1086628297
据我了解,这些是类概率。我想知道是否有一种简单的方法来计算测试数据的模型准确性。现在,我取每一行的最大值并与原始标签进行比较。谢谢
像这样:
predicted <- colnames(fit.ridge.pred)[apply(fit.ridge.pred,1,which.max)]
table(predicted, test[, 1]
第一行采用模型每行输出最高概率的类,之后第二行构造混淆矩阵。
然后,精度基本上是分类正确的观测值的比例(对角线/总数的总和(
有关更多详细信息,请参阅 Glmnet 小插图
fit.ridge.pred <- predict(fit.ridge.best, test[,-1], type = "class") # predict classes, not probability
table(fit.ridge.pred,test[,1]) # confusion matrix
mean(fit.ridge.pred==test[,1]) # accuracy