Я пытаюсь приспособить модель ridge
регрессии к набору данных белого вина . Я хочу использовать весь набор данных для обучения и использовать 10-кратное резюме для расчета частоты ошибок теста. Вот главный вопрос - как рассчитать погрешность теста CV для модели регрессионной логики c. Я вычислил наилучшее значение lambda
(также используя CV
), и теперь я хочу найти коэффициент ошибок теста CV
. В настоящее время мой код для вычисления указанной ошибки теста CV -
cost1 <- function(good, pi=0) mean(abs(good-pi) > 0.5)
ridge.model <- glmnet(x, y, alpha = 0, family = "binomial", lambda = bestlam)
ridge.model$beta # all coefficients for the variables
ridge.model.cv.err<- cv.glm(winedata,ridge.model,cost1, K=10)
ridge.model.cv.err$delta
Это дает следующую ошибку -
Ошибка в cbind2 (1, newx)% % nbeta: еще не реализованный метод для% %
Есть идеи, что может быть причиной этой ошибки?
Было предложено , что я должен использовать cv.glmnet
вместо. Тем не менее, не похоже, что он принимает тип модели (это будет logisti c здесь) в качестве входных данных, плюс ему нужен список значений лямбда-выражений в качестве входных данных, тогда как у меня просто есть одно лучшее значение лямбда-значений, которое я получил, как упоминалось над. Таким образом, выполнение кода -
ridge.model.cv.err<- cv.glmnet(x,y, lambda = bestlam, cost1, K=10)
выдает ошибку - Error in cv.glmnet(x, y, lambda = bestlam, cost1, K = 10) : Need more than one value of lambda for cv.glmnet
Данные были обработаны как -
winedata <- read.delim("winequality-white.csv", sep = ';')
winedata$quality[winedata$quality< 7] <- "0" #recode
winedata$quality[winedata$quality>=7] <- "1" #recode
winedata$quality <- factor(winedata$quality)# Convert the column to a factor
names(winedata)[names(winedata) == "quality"] <- "good" #rename 'quality' to 'good'
Благодарим вас за помощь.