2014-12-29 4 views
3

Я очень новичок в обучении машинам, и я пытаюсь использовать forest cover prediction competition on Kaggle, но я довольно быстро повесил трубку на. При запуске кода ниже я получаю следующую ошибку.Ошибка в train.default (x, y, weights = w, ...): параметры окончательной настройки не могут быть определены

Error in train.default(x, y, weights = w, ...) : 
final tuning parameters could not be determined 
In addition: There were 50 or more warnings (use warnings() to see the first 50) 
# Load the libraries 
library(ggplot2); library(caret); library(AppliedPredictiveModeling) 
library(pROC) 
library(Amelia) 

set.seed(1234) 

# Load the forest cover dataset from the csv file 
rawdata <- read.csv("train.csv",stringsAsFactors = F) 
#this data won't be used in model evaluation. It will only be used for the submission. 
test <- read.csv("test.csv",stringsAsFactors = F) 

######################## 
### DATA PREPARATION ### 
######################## 

#create a training and test set for building and evaluating the model 
samples <- createDataPartition(rawdata$Cover_Type, p = 0.5,list = FALSE) 
data.train <- rawdata[samples, ] 
data.test <- rawdata[-samples, ] 

model1 <- train(as.factor(Cover_Type) ~ Elevation + Aspect + Slope + Horizontal_Distance_To_Hydrology, 
       data = data.train, 
       method = "rf", prox = "TRUE") 
+0

Покажите нам первые несколько предупреждений, сообщенные 'предупреждения()' – smci

ответ

8

Следующая должно работать:

model1 <- train(as.factor(Cover_Type) ~ Elevation + Aspect + Slope + Horizontal_Distance_To_Hydrology, 
          data = data.train, 
          method = "rf", tuneGrid = data.frame(mtry = 3)) 

всегда лучше указать параметр tuneGrid, который представляет собой кадр данных с возможными значениями настройки. Посмотрите на ?randomForest и ?train для получения дополнительной информации. rf имеет только один параметр настройки mtry, который контролирует количество функций, выбранных для каждого дерева.

Вы также можете запустить modelLookup, чтобы получить список параметров настройки для каждой модели

> modelLookup("rf") 
# model parameter       label forReg forClass probModel 
#1 rf  mtry #Randomly Selected Predictors TRUE  TRUE  TRUE 
+2

Это полезно (+1), но у меня есть эта проблема при работе '' train' с методом = «Parrf» 'и сохраняется даже тогда, когда Я использую 'tuneGrid = data.frame (mtry = 3)', тогда как у меня не было ошибок с 'method =" rf "' –

4

Я тоже делаю соревнования Kaggle и был с использованием пакета «каре», чтобы помочь с выбором «лучшие» моделями параметры. После получения многих из этих ошибок я заглянул в сценарий за кулисами и обнаружил вызов функции под названием «class2ind», которая не существует (по крайней мере, где-либо я знаю). Наконец, я нашел еще одну функцию, называемую «class.ind», которая находится в пакете «nnet». Я решил просто попытаться создать локальную функцию под названием «class2ind» и поп в коде из функции «class.ind». И низко, и вот это сработало!

# fix for caret 
class2ind <- function(cl) 
{ 
     n <- length(cl) 
     cl <- as.factor(cl) 
     x <- matrix(0, n, length(levels(cl))) 
     x[(1:n) + n*(unclass(cl)-1)] <- 1 
     dimnames(x) <- list(names(cl), levels(cl)) 
     x 
}