2

パッケージキャレットを使用して、nnet 分類モデルをトレーニングしています。デフォルトのシグモイド (ロジスティック) 伝達関数はうまく機能します。いくつかの比較を行うために線形伝達関数を使用しようとしていました。しかし、エラーが発生しました。

私が見つけた興味深いことは、ターゲット変数に 2 つ以上のクラスがある場合、線形伝達関数は問題ないということです。ただし、ターゲット変数に 2 つのクラスがある場合は失敗します。

サンプルコードを次に示します。

library(caret)
data(iris)

#This modeling works well. Species has 3 classes
model <- train(Species~., data=iris, method='nnet', linout=T, trControl=trainControl(method='cv'))

#Subset the dataset s.t. only two levels left for Species.
iris1 <- iris[1:100,]
iris1 <- droplevels(iris1)
model1 <- train(Species~., data=iris1, method='nnet', linout=T, trControl=trainControl(method='cv'))

エラーメッセージは次のとおりです。

Something is wrong; all the Accuracy metric values are missing:
    Accuracy       Kappa    
 Min.   : NA   Min.   : NA  
 1st Qu.: NA   1st Qu.: NA  
 Median : NA   Median : NA  
 Mean   :NaN   Mean   :NaN  
 3rd Qu.: NA   3rd Qu.: NA  
 Max.   : NA   Max.   : NA  
 NA's   :9     NA's   :9    
Error in train.default(x, y, weights = w, ...) : Stopping

何が問題なのかわからない。助言がありますか?ありがとう!

4

1 に答える 1

1

また、50 個の警告があります: エントロピーはロジスティック ユニットにのみ適合します

linout を False に設定すると、コードが機能します。Linout を True に設定すると、線形出力ユニットが切り替えられますが、これはデータセットの目的ではありません。この設定で nnet を実行しても、iris1 でエラーが発生します。

nnet(Species~., data=iris1, size = 1, linout = T)エラーを返す簡単な nnet ステートメントを使用してみましょう

nnet.default(x, y, w, entropy = TRUE, ...) のエラー: エントロピーはロジスティック単位にのみ適合します

これはおおよそキャレットからの警告です。

于 2015-12-17T18:20:54.717 に答える