在nnet R中使用softmax用于具有2个以上状态的目标列

时间:2013-11-08 23:54:43

标签: r softmax nnet

我正在使用nnet包来分类具有3个状态的目标列

model <- nnet(targetcolumn ~ ., data=DATAFRAME)

但我希望它使用熵而不是默认的softmax,当我设置softmax = false时,它会因错误而失败:

model <- nnet(targetcolumn ~ ., data=DATAFRAME, maxit=1000, MaxNWts=10000,softmax=FALSE, entropy=TRUE)

Error in nnet.default(x, y, w, softmax = false, ...) : 
  formal argument "softmax" matched by multiple actual arguments

在这种情况下,有没有办法以某种方式使用熵建模?

1 个答案:

答案 0 :(得分:1)

# because you've got a classification problem it is imperative that
softmax=TRUE

#to calculate the entropy
entropy=TRUE

但在这两个一起工作之前,有必要将Y(0 1 2 ...)转换为虚拟变量矩阵。 这可以通过以下方式完成:

dataframe$Y = class.ind(dataframe$targetcolumn)

# delete the old target variable
dataframe$targetcolumn=NULL

# and now you can start creating your ANN
nnet1 = nnet (Y~., dataframe, size=..., decay=..., entropy=TRUE, softmax=TRUE)