2013-02-10 2 views
0

Я пытаюсь получить статистику прогнозирования для различных моделей обучения с пакетом caret. Ниже приведен пример, который иллюстрирует мою потребность:Статистика прогноза для нескольких моделей с помощью каретки

library(caret) 

# Training: 
# ... Get X and Y for training a binary classification problem. 
# ... X is input (2000, 5) Y is output (2000,1) ... 

tmp <- createDataPartition(Y, p = 3/4, times = 3, list = TRUE, groups = min(5, length(Y))) 

myCtrl <- trainControl(method = "boot", index = tmp, timingSamps = 2, classProbs = TRUE, summaryFunction = twoClassSummary) 

RFmodel <- train(X,Y,method='rf',trControl=myCtrl,tuneLength=1, metric="ROC") 
SVMmodel <- train(X,Y,method='svmRadial',trControl=myCtrl,tuneLength=3, metric="ROC") 
KNNmodel <- train(X,Y,method='knn',trControl=myCtrl,tuneLength=10, metric="ROC") 
NNmodel <- train(X,Y,method='nnet',trControl=myCtrl,tuneLength=3, trace = FALSE, metric="ROC") 

# resamps reports ROC, Sens, Spec for all models 
resamps <- resamples(list(RF = RFmodel, KNN = KNNmodel, NN = NNmodel, SVM = SVMmodel)) 

# Prediction: 
# ... Collect X_pred (7000, 5) and Y_pred (7000,1) ... 
testPred <- predict(list(RF = RFmodel, KNN = KNNmodel, NN = NNmodel, SVM = SVMmodel), Xtst, type="prob") 

Как я могу получить статистику предсказания (ROC и т.д.) от X_kand Y_ pred для моих 4 моделей?

ответ

1
#Make a list of all the models 
all.models <- list(model1, model2, model3, model4, model5, model6) 
names(all.models) <- sapply(all.models, function(x) x$method) 
sort(sapply(all.models, function(x) min(x$results$RMSE))) 

Приведенный выше код не является моим, если я правильно помню.

# Table 

# CORRELATIONS 
correlations = c(
cor(predict(model1,newdata=TD),Y), 
cor(predict(model2,newdata=TD),Y), 
cor(predict(model3,newdata=TD),Y), 
cor(predict(model4,newdata=TD),Y), 
cor(predict(model5,newdata=TD),Y), 

RMSE = as.numeric(sapply(all.models, function(x) min(x$results$RMSE))) 

names=c('General Linear Model','Random Forests','Artificial Neural Networks','Logistic/multinomial regression','K nearest neighbors', 'Support Vector Machines') 

matrix(c(names,correlations,RMSE),ncol=3) 

Надеюсь, это поможет. Я знаю, что это не ROC, но это некоторые статистические данные о предсказании.