【问题标题】:neuralnet,caret and cross validation神经网络、插入符号和交叉验证
【发布时间】:2023-04-04 07:44:02
【问题描述】:

我有一个非常大的数据集,其中包含 36 个特征,其中包括 6 个输出列。我正在尝试在该数据集中执行 MLP 反向传播神经网络学习(回归),并且我正在使用神经网络和插入符号。我想要两个隐藏层,每层有 6 个和 5 个节点。我还想在我的 NN 模型中添加 k 折交叉验证

    control <- trainControl(method="repeatedcv", number=5, repeats=1)
    # train the model
    model <- train(X,Y, method="neuralnet", 
               algorithm = "backprop", learningrate = 0.25,act.fct = 'tanh',
               tuneGrid = data.frame(layer1 = 2:6, layer2 = 2:6, layer3 = 0),threshold = 0.1, trControl=control)
warnings()

其中 X 和 Y 分别是特征和预测数据帧

但它给出错误和警告

Error in train.default(X, Y, method = "neuralnet", algorithm = "backprop",  : 
  wrong model type for classification
> warnings()
Warning messages:
1: In eval(expr, envir, enclos) :
  model fit failed for Resample01: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

2: In eval(expr, envir, enclos) :
  model fit failed for Resample02: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

3: In eval(expr, envir, enclos) :
  model fit failed for Resample03: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

4: In eval(expr, envir, enclos) :
  model fit failed for Resample04: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

5: In eval(expr, envir, enclos) :
  model fit failed for Resample05: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

6: In eval(expr, envir, enclos) :
  model fit failed for Resample06: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

7: In eval(expr, envir, enclos) :
  model fit failed for Resample07: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

8: In eval(expr, envir, enclos) :
  model fit failed for Resample08: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

9: In eval(expr, envir, enclos) :
  model fit failed for Resample09: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

10: In eval(expr, envir, enclos) :
  model fit failed for Resample10: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

11: In eval(expr, envir, enclos) :
  model fit failed for Resample11: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

12: In eval(expr, envir, enclos) :
  model fit failed for Resample12: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

13: In eval(expr, envir, enclos) :
  model fit failed for Resample13: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

14: In eval(expr, envir, enclos) :
  model fit failed for Resample14: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

15: In eval(expr, envir, enclos) :
  model fit failed for Resample15: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

16: In eval(expr, envir, enclos) :
  model fit failed for Resample16: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

17: In eval(expr, envir, enclos) :
  model fit failed for Resample17: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

18: In eval(expr, envir, enclos) :
  model fit failed for Resample18: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

19: In eval(expr, envir, enclos) :
  model fit failed for Resample19: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

20: In eval(expr, envir, enclos) :
  model fit failed for Resample20: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

21: In eval(expr, envir, enclos) :
  model fit failed for Resample21: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

22: In eval(expr, envir, enclos) :
  model fit failed for Resample22: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

23: In eval(expr, envir, enclos) :
  model fit failed for Resample23: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

24: In eval(expr, envir, enclos) :
  model fit failed for Resample24: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

25: In eval(expr, envir, enclos) :
  model fit failed for Resample25: layer1=4, layer2=1, layer3=1 Error in if (reached.threshold < min.reached.threshold) { : 
  missing value where TRUE/FALSE needed

26: In nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo,  ... :
  There were missing values in resampled performance measures.

【问题讨论】:

  • 您对 train 命令的使用是错误的。如果在此处指定调整参数,则会出现错误。在这种情况下是隐藏层。
  • 我已经用适当的图层参数编辑了代码,但仍然给出错误
  • 您的实际数据是什么样的?您只有 1 个预测变量还是 x 是具有多列的矩阵?你的 Y 是一个因素吗?

标签: r neural-network r-caret


【解决方案1】:

如果您不介意,可以使用“neuralnet”包手动进行交叉验证。这是一个示例:https://www.r-bloggers.com/fitting-a-neural-network-in-r-neuralnet-package/,在“A(快速)交叉验证”部分。

【讨论】:

    猜你喜欢
    • 2022-06-15
    • 2020-03-27
    • 2014-04-20
    • 2016-12-07
    • 2021-07-20
    • 2022-10-15
    • 2020-09-23
    • 2016-04-15
    • 2020-08-13
    相关资源
    最近更新 更多