2016-04-15 3 views
0

Я пытаюсь использовать пакет caret и nnet вместе, но получил ошибку ниже. Я использовал предупреждения(), чтобы понять, что это такое, но не смог найти что-либо в Интернете. Пожалуйста, дайте мне знать. Благодарю.В eval (expr, envir, cover): модель не подходит для Fold01:

> str(Std_data) 
'data.frame': 1628 obs. of 18 variables: 
$ Seed : num 1 1 1 1 1 1 1 1 1 1 ... 
$ Pyth : num 0.882 0.904 0.295 0.882 0.671 ... 
$ EFG : num 0.709 -0.212 -0.992 0.709 -0.291 ... 
$ PPP : num 0.506 0.2393 0.3952 0.506 0.0309 ... 
... 

$ PD  : num 2.17 2.03 1.47 1.4 1.19 ... 
$ OppSeed: num 16 16 16 9 16 5 3 3 12 3 ... 
$ Win : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 1 1 2 1 ... 

> model <- train(Win ~ . - PD, data=Std_data, method='nnet', linout=TRUE, trace = FALSE, 
+    tuneGrid=expand.grid(.size=c(2:8),.decay=c(0,0.0001, 0.001,0.01,0.1)), trControl = trainControl(method = "cv")) 

Something is wrong; all the Accuracy metric values are missing: 
... 
Error in train.default(x, y, weights = w, ...) : Stopping 
In addition: There were 50 or more warnings (use warnings() to see the first 50) 

> warnings() 
Warning messages: 
1: In eval(expr, envir, enclos) : 
model fit failed for Fold01: size=2, decay=0e+00 Error in nnet.default(x, y, w, entropy = TRUE, ...) : 
entropy fit only for logistic units 

ответ

1

Возможно, ваш код будет работать, если вы установите для строки значение False. Linout установлен для True переключателей для линейных блоков вывода. Ваша переменная Win является двоичной переменной, а не непрерывной переменной. По крайней мере, он избавится от энтропии, пригодной только для сообщения логистических единиц.