6

我以前见过其他人出现此错误,但是,我还没有找到令人满意的答案。我想知道是否有人可以对我的问题提供一些见解?

我有一些汽车拍卖数据,我试图对其进行建模以预测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 中重新创建结果。我在插入符号中尝试了其他一些神经网络包,但总是得到相同的结果。

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

4

2 回答 2

3

如果您在调用之前缩放数据是否可以解决问题train?如果您在运行模型之前不缩放所有变量,我在 glmnet 和 nnet 上遇到了这个问题。如果您将所有变量都设为数字,它也有帮助(有趣的是)。

您也可以尝试使重采样明确,例如使用

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

然后将其传递给train

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

如果没有数据,有时很难发现错误,抱歉。

于 2015-07-28T22:23:26.163 回答
1

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

于 2017-01-07T12:00:41.720 回答