我正在尝试使用Caret软件包重建脊回归系数路径,如图6.15中Kuhn和Johnson的Applied Predictive Modeling一书中所述 . 提供目标输出 .
数据通过以下代码获得:
require(tidyverse)
require(caret)
require(AppliedPredictiveModeling)
require(elasticnet)
data(solubility)
set.seed(100)
indx <- createFolds(solTrainY, returnTrain = TRUE)
ctrl <- trainControl(method = "cv", index = indx)
ridgeGrid <- data.frame(lambda = seq(0, .1, length = 15))
set.seed(100)
cvresult <- train(x = solTrainXtrans,
y = solTrainY,
method = "ridge",
tuneGrid = ridgeGrid,
trControl = ctrl,
preProc = c("center", "scale"))
Edit :以下是我的尝试;我意识到我不想要最终模型,但 predict.enet
函数否则会给我一个错误:
coeffs <- predict.enet(cvresult$finalModel, type = "coefficients", mode = "fraction")
as.data.frame(unclass(coeffs$coefficients)) %>%
mutate(Fraction = coeffs$fraction) %>%
gather(Variable, Coefficient, -Fraction) %>%
mutate(Col = ifelse(Variable %in% c("NumNonHAtoms", "NumNonHBonds", "NumMultBonds"), Variable, "Other")) %>%
ggplot(aes(Fraction, Coefficient, group=Variable, colour = Col)) +
geom_line()
注释掉的代码(慢速)或ggplot都不会出现在每本书中 .