我正在使用glmnet我的因变量是二进制的(0 类,1 类)。我想报告模型的百分比准确度。所以我将这个predict函数用于我的测试数据集。但是,返回的值是小数,而不是 0 和 1。所以我设置了一个阈值0.5,即如果预测值 > 0.5,我认为它是 1,如果预测值 <= 0.5,我认为它是 0。下一步我通过比较测试数据的预测值和实际值来创建混淆矩阵。从这里我找到了准确性。我在下面粘贴了我的示例代码。我不确定这是否是报告glmnet预测二元因变量的模型的准确率百分比的正确方法。
data <- read.csv('datafile', header=T)
mat <- as.matrix(data)
X <- mat[, c(1:ncol(mat)-1)]
y <- mat[, ncol(mat)]
fit <- cv.glmnet(X, y, family="binomial", type.measure="class", alpha=0.1)
t <- 0.2*nrow(mat) #20% of data
t <- as.integer(t)
testX <- mat[1:t, 1:ncol(mat)-1]
predicted_y <- predict(fit, s=0.01, testX, type='response')
predicted_y[predicted_y>0.5] <- 1
predicted_y[predicted_y<=0.5] <- 0
Yactual <- mat[1:t, ncol(mat)]
confusion_matrix <- ftable(Yactual, predicted_y)
accuracy <- 100* (sum(diag(confusion_matrix)) / length(predicted_y))