R|如何从cv.glmnet中获得准确性



我一直在使用cv.glmnet函数来拟合lasso逻辑回归模型。我正在使用R

这是我的密码。我使用的是iris数据集。

df = iris %>% 
mutate(Species = as.character(Species)) %>% 
filter(!(Species =="setosa")) %>% 
mutate(Species = as.factor(Species))

X = data.matrix(df %>% select(-Species))
y = df$Species
Model = cv.glmnet(X, y, alpha = 1, family = "binomial")

如何从cv.glmnet对象(model(中获得模型精度。

如果我在一个正态逻辑回归模型上使用了插入符号,那么准确度已经在输出中了。

train_control = trainControl(method = "cv", number = 10)
M2 = train(Species ~., data = df, trControl = train_control, 
method = "glm", family = "binomial")
M2$results

但是CCD_ 5对象似乎不包含该信息。

您需要像下面的模型2中那样添加type.measure='class',否则family='binomial'的默认值为'deviance'

df = iris %>% 
mutate(Species = as.character(Species)) %>% 
filter(!(Species =="setosa")) %>% 
mutate(Species = as.factor(Species))
X = data.matrix(df %>% select(-Species))
y = df$Species
Model  = cv.glmnet(X, y, alpha = 1, family = "binomial")
Model2 = cv.glmnet(X, y, alpha = 1, family = "binomial", type.measure = 'class')

然后CCD_ 9给出了误分类率。

Model2$lambda ## lambdas used in CV
Model2$cvm    ## mean cross-validated error for each of those lambdas

如果您想要最佳lambda的结果,可以使用lambda.min

Model2$lambda.min ## lambda with the lowest cvm
Model2$cvm[Model2$lambda==Model2$lambda.min] ## cvm for lambda.min

最新更新