cross_Validation in oneR usuing R language

Viewed 49

I'm trying to cross-value with the OneR algorithm and I don't quite know how to do it.With the example code I get the error "Error in x[0, , drop = FALSE] : incorrect number of dimensions"

glass <- read.csv("https://archive.ics.uci.edu/ml/machine-learning-databases/glass/glass.data",
                  col.names=c("","RI","Na","Mg","Al","Si","K","Ca","Ba","Fe","Type")

str(glass)

head(glass)

standard.features <- scale(glass[,2:10])

data <- cbind(standard.features,glass[11])

data$Type<-factor(data$Type)

anyNA(data)

inTraining <- createDataPartition(data$Type, p = .7, list = FALSE, times =1 )

training <- data[ inTraining,]

testing  <- data[-inTraining,]

set.seed(12345)

fitControl <- trainControl(## 5-fold CV
  method = "cv",
  number = 5
  
)

model <- OneR(Type~.,data= training)


oneRFit1 <- train(model, 
                 trControl = fitControl)
  
2 Answers

It is fairly easy to write your own loop to carry out cross-validation. However, it looks like you want to use the caret package to manage it. If so, just use the method argument inside caret's train function to specify that you want to use OneR:

oneRFit1 <- train(Type~., 
                  data=training,
                  method="OneR" ,
                  trControl = fitControl)

str(iris) head(iris)

set.seed(123)
inTraining <- createDataPartition(iris$Species, p = .7, list = FALSE, times =1 )
training <- iris[ inTraining,]
testing  <- iris[-inTraining,]
set.seed(123)

train.control <- trainControl(method = "cv", number = 2)
# Train the model
oneRFit <- train(Species ~., data = training, method = "OneR",
trControl = train.control)
Related