knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
library(ridgereg) library(caret) library(MASS)
BostonHousing <- MASS::Boston scale_BostonHousing <- scale(as.matrix(BostonHousing[, c(1:3,5:13)])) scale_BostonHousing <- as.data.frame(scale_BostonHousing) scale_BostonHousing$medv <- BostonHousing$medv scale_BostonHousing$chas <- BostonHousing$chas BostonHousing <- scale_BostonHousing
set.seed(12345) train <- caret::createDataPartition(y = BostonHousing$medv, p=0.8, list = FALSE) training <- BostonHousing[train,] test <- BostonHousing[-train, ]
fitlinear <- caret::train(medv~ . , data=training, method="lm") fitlinear_forward <- caret::train(medv~., data=training, method="leapForward", tuneGrid = data.frame(nvmax=1:(ncol(BostonHousing)-1)))
rbind(fitlinear$results[2:7], fitlinear_forward$results[fitlinear_forward$bestTune[[1]],][2:7])
```r Rid <- list(type = "Regression", library = "Lab4HugoOtto", loop = NULL) prm <- data.frame(parameter = "lambda", class = "numeric" , label = "lambda") Rid$parameters <- prm Fit<-function(x,y,lambda,param,lev,last,classProbs,...){
names <- lapply(x, function(x){ all(x == y) }) y_name <- names(x)[unlist(names)] x_names <- names(x)[!unlist(names)]
formula <- paste(y_name,"~", sep="")
for (xvar in 1:length(x_names)) { formula <- paste(formula, "+", x_names[xvar], sep="") }
formula <- as.formula(formula) model <- ridgereg::ridgereg( formula = formula, data=x,lambda= param$lambda) return(model) }
Rid$fit <- Fit pred <- function(modelFit, newdata , preProc = NULL, submodels = NULL){ predict(modelFit, newdata) }
Rid$predict <- pred Rid$grid <- function(x, y, len=NULL, search="grid"){ data.frame(lambda=seq(from= 0 , to = 20, by = 0.5)) }
Rid$sort <- function(x) x[order(-x$lambda),]
Rid$prob <- list(NULL)
Rid$label <- "Ridge regression" RidFit <- caret::train( y = training$medv, x = training, method = Rid ) RidFit
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.