插入神经网络错误:"在重采样性能指标中缺少值"

时间:2015-07-28 07:16:28

标签: r neural-network r-caret nnet

我之前见过其他人有这个错误,但是,我没有找到满意的答案。我想知道是否有人能对我的问题提供一些见解?

我有一些汽车拍卖数据,我试图建模以预测Hammer.Price

> str(myTrain)
'data.frame':   34375 obs. of  9 variables:
 $ Grade          : int  4 4 4 4 2 3 4 3 3 4 ...
 $ Mileage        : num  150850 113961 71834 57770 43161 ...
 $ Hammer.Price   : num  750 450 1600 4650 4800 ...
 $ New.Price      : num  15051 13795 15051 14475 14475 ...
 $ Year.Introduced: int  1996 1996 1996 1996 1996 1996 1996 1996 1996 1996 ...
 $ Engine.Size    : num  1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 ...
 $ Doors          : int  3 3 3 3 3 3 3 3 3 3 ...
 $ Age            : int  3771 4775 3802 2402 2463 3528 3315 3193 4075 4988 ...
 $ Days.from.Sale : int  1778 1890 2183 1939 1876 1477 1526 1812 1813 1472 ...

myTrain随机包含70%的数据,myTest包含其他30%的数据,我会训练模型

myModel <- train(Hammer.Price ~ ., data = myTrain, method = "nnet")

这会产生以下警告:

  

警告讯息:   在nominalTrainWorkflow中(x = x,y = y,wts = weights,info = trainInfo,:     重新抽样的绩效指标中缺少值。

当我尝试预测所有结果等于1时。

myTestPred <- predict(myModel, myTest)

我之前使用过这些数据来训练使用SPSS Modeller的MLP神经网络,但似乎无法在R中重新创建结果。我在插入符号中尝试了一些其他神经网络包但总是得到同样的结果。

有没有人比我更了解这一点?

2 个答案:

答案 0 :(得分:3)

Does it fix the problem if you scale the data before calling train? I have had this problem with glmnet and nnet if you don't scale all the variables before running the model. It also helps (anecdotally) if you make all of your variables numeric.

You can also try making your resampling explicit e.g. using

myControl <- trainControl(method = "repeatedcv", repeats=5, number = 10)

and then passing this to train:

myModel <- train(Hammer.Price ~ .,
    data = myTrain,
    method = "nnet",
    trControl = mycontrol)

Without the data it is sometimes difficult to spot the error, sorry.

答案 1 :(得分:1)

您的目标变量Hammer.Price是一个数字变量。在nnet - 函数的帮助页面中,您将看到nnet中的默认值是一个逻辑目标变量。因此,在对数字目标变量进行建模时,您必须告诉nnet您正在这样做。参数linout是您需要的参数。通过设置linout = TRUE,您不应再次收到警告消息。