0

这是我的第一个 ANN,所以我想这里可能有很多事情做错了。我不关注

我正在尝试从iris以语言提供的数据集中预测花卉种类,R但出现以下错误:

Error in `dimnames<-.data.frame`(`*tmp*`, value = list(n)) : 
invalid 'dimnames' given for data frame

我的代码:

require(mxnet)

train <- iris[1:130,]
test  <- iris[131:150,]

train.data <- as.data.frame(train[-5])
train.label <- data.frame(model.matrix(data=train,object =~Species-1))


test.data <- as.data.frame(test[-5])
test.label <- data.frame(model.matrix(data=test,object =~Species-1))


var1 <- mx.symbol.Variable("data")

layer0 <- mx.symbol.FullyConnected(var1, num.hidden=3)
cat.out <- mx.symbol.SoftmaxOutput(layer0)


net.model <- mx.model.FeedForward.create(cat.out,
                                     array.layout = "auto",
                                     X=train.data, 
                                     y=train.label,
                                     eval.data = list(data=test.data,label=test.label),
                                     num.round = 20, 
                                     array.batch.size = 20,
                                     learning.rate=0.1,
                                     momentum=0.9,
                                     eval.metric = mx.metric.accuracy)

更新:

traning.label[,1]通过指定要在标签(和test.label[,1])中使用的列,我设法摆脱了这个错误。

但是现在我正在训练我的网络来预测我的二元变量中的一个,而我有 3 个(每个物种一个)。

4

2 回答 2

1

我有同样的问题,原来:train.data 应该是一个矩阵 train.label 应该是一个数字向量检查这两个,希望它应该工作。

于 2017-06-22T08:51:04.580 回答
0

我有一个类似的问题,但在预测步骤期间。事实证明,我的功能位于导致问题的数据框中。一旦我将数据框转换为矩阵,问题就消失了。

pred.values = stats::predict(model,as.matrix(features)) 

代替

pred.values = stats::predict(model,features) 

因此,在训练和预测过程中,这些特征都需要是一个矩阵。

于 2019-09-04T18:52:29.817 回答