vignettes/ridgereg.R

## ---- include=FALSE------------------------------------------------------
library(caret)
library(mlbench)
library(leaps)
library(lib7af)
#library(MASS)
seed <- 111
set.seed(seed)
tracon <- caret::trainControl("cv")
data("BostonHousing")

## ------------------------------------------------------------------------
tr_data_index<-createDataPartition(BostonHousing$medv, p=0.7, times= 1, list= FALSE)
tr_data<-BostonHousing[tr_data_index,]
te_data<-BostonHousing[-tr_data_index,]

## ---- echo=FALSE---------------------------------------------------------
l_n_m<-train(medv~., tr_data, method="lm", trControl = tracon)
l_n_m
l_n_M<-train(medv~., tr_data, method="leapForward", trControl = tracon) 
l_n_M
                    

## ----evaluation----------------------------------------------------------
l_n_m$results$RMSE
l_n_M$results$RMSE

## ---- include=FALSE------------------------------------------------------
# Acknowledgement to Eric Herwin and Albin Vasterlund
ridge_example<- list(type = "Regression",
              library ="lib7af",
              loop= NULL,
              prob=NULL)

ridge_example$parameters<-data.frame(parameter="lambda",
                            class="numeric",
                            label="Ridge Regression")

ridge_example$grid<-function(x,y,len=NULL, search="grid"){
data.frame(lambda=lambda)
}
ridge_example$fit <- function (x, y, wts, param, lev, last, classProbs, ...) {
    d_rid <- if (is.data.frame(x))
    x
    else as.data.frame(x)
    d_rid$.outcome<-y
    results<-ridgereg(.outcome ~ ., data=d_rid ,lambda = param$lambda, ...)

    return(results)
  }
  ridge_example$predict<-function (modelFit, newdata, submodels = NULL) {
    if (!is.data.frame(newdata))
      newdata <- as.data.frame(newdata)
    newdata <- scale(newdata)
    return(modelFit$predict(newdata))
  }

## ----lambda--------------------------------------------------------------
set.seed(seed)
result<-c()
for(lambda in seq(0, 20, by = 1)) {
  zwes <- train(medv~., data = tr_data, ridge_example)
  result[lambda] <- zwes$results$RMSE
}
lambda <- which.min(result) / 10
RMSE <- result[which.min(result)]
lambda
RMSE

count<-10
l_val<-seq(0.1,by=.1)
fit_control<-trainControl(method="repeatedcv",
                                  number=count,
                                  repeats= count)
ridge_example<-train(medv~.,
                    data=te_data,
                    method=ridge_example,
                    trControl= fit_control)
afuergut/lib7af documentation built on May 28, 2019, 4:42 p.m.