2016-08-14 2 views
0

ich trainiert habe ein glmnet logistische Regressionsmodell regularisiert mit Caret der trainControl und Zugfunktionen wie folgt mit metrischen = „ROC“ und erhalten folgende Fehlermeldung:Fehler glmnet Regression mit metrischen als ROC in Caret mit

> ctrl_s10_2class <- trainControl(method = "repeatedcv", number = 10, repeats = 10 , savePredictions = TRUE, classProbs = TRUE) 
> model_train_glmnet_s10_2class <- train(Class ~ ZCR + Energy + SpectralC + SpectralS + SpectralE + SpectralF + SpectralR + MFCC1 + MFCC2 + MFCC3 + MFCC4 + MFCC5 + MFCC6 + MFCC7 + MFCC8 + MFCC9 + MFCC10 + MFCC11 + MFCC12 + MFCC13, data = training_s10_2class, method="glmnet", trControl = ctrl_s10_2class, metric = "ROC") 

Error in evalSummaryFunction(y, wts = weights, ctrl = trControl, lev = classLevels, : 

train()'s use of ROC codes requires class probabilities. See the classProbs option of trainControl() 

In addition: Warning messages: 
1: In train.default(x, y, weights = w, ...) : 
You are trying to do regression and your outcome only has two possible values Are you trying to do classification? If so, use a 2 level factor as your outcome column. 
2: In train.default(x, y, weights = w, ...) : 
cannnot compute class probabilities for regression 

Aber Ich habe ClassProbs = TRUE in der trainControl-Funktion bereits eingeschaltet. Auch die Warnmeldungen zu adressieren, ich dachte, ich muss meine 2 Klassendaten nivellieren, die ich tat, um diesen Fehler zu finden:

> sensor6data_s10_2class <- within(sensor6data_s10_2class, Class <- as.factor(Class)) 
> sensor6data_s10_2class$Class2 <- relevel(sensor6data_s10_2class$Class,ref="1") 
> model_train_glmnet_s10_2class <- train(Class2 ~ ZCR + Energy + SpectralC + SpectralS + SpectralE + SpectralF + SpectralR + MFCC1 + MFCC2 + MFCC3 + MFCC4 + MFCC5 + MFCC6 + MFCC7 + MFCC8 + MFCC9 + MFCC10 + MFCC11 + MFCC12 + MFCC13, data = training_s10_2class, method="glmnet", trControl = ctrl_s10_2class, metric = "ROC") 

Error in train.default(x, y, weights = w, ...) : 
At least one of the class levels is not a valid R variable name; This will cause errors when class probabilities are generated because the variables names will be converted to X1, X0 . Please use factor levels that can be used as valid R variable names (see ?make.names for help). 

Jede Hilfe dieses Problem zu beheben, mit oder ohne releveling ist sehr zu schätzen! Vielen Dank.

+1

die nehmen sollte Fehlermeldung sagt alles. Deine Level haben die falsche Benennung. 0 und 1 können nicht in gültige R-Namen umgewandelt werden. – phiver

+0

Konvertiere deine 0 und 1 in etwas wie "Ja", "Nein". –

Antwort

0

1: In train.default(x, y, weights = w, ...) : You are trying to do regression and your outcome only has two possible values Are you trying to do classification? If so, use a 2 level factor as your outcome column.

Scheint wie ein Fehler mit der Form der Daten verwendet. Sie könnten versuchen, es zu einem Faktor Umwandlung:

training_s10_2class$Class2 = as.factor(training_s10_2class$Class2) 

Damit Sie nicht mehr

brauchen
classProbs = TRUE 

Wenn Sie es entfernen, die Pflege Ihrer zweiten Warnung

2: In train.default(x, y, weights = w, ...) : cannnot compute class probabilities for regression

Verwandte Themen