パッケージnaiveBayes
内の関数を使用しようとしました。e1071
プロセスは次のとおりです。
>library(e1071)
>data(iris)
>head(iris, n=5)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
>model <-naiveBayes(Species~., data = iris)
> pred <- predict(model, newdata = iris, type = 'raw')
> head(pred, n=5)
setosa versicolor virginica
[1,] 1.00000 2.981309e-18 2.152373e-25
[2,] 1.00000 3.169312e-17 6.938030e-25
[3,] 1.00000 2.367113e-18 7.240956e-26
[4,] 1.00000 3.069606e-17 8.690636e-25
[5,] 1.00000 1.017337e-18 8.885794e-26
これまでのところ、すべて問題ありません。次のステップでは、新しいデータ ポイントの作成を試み、naivebayes モデル ( model
) を使用してクラス変数 ( ) を予測しSpecies
、トレーニング データ ポイントの 1 つを選択しました。
> test = c(5.1, 3.5, 1.4, 0.2)
> prob <- predict(model, newdata = test, type=('raw'))
結果は次のとおりです。
> prob
setosa versicolor virginica
[1,] 0.3333333 0.3333333 0.3333333
[2,] 0.3333333 0.3333333 0.3333333
[3,] 0.3333333 0.3333333 0.3333333
[4,] 0.3333333 0.3333333 0.3333333
と奇妙です。私が使用したデータポイントtest
は、データセットの行ですiris
。実際のデータに基づくと、このデータ ポイントのクラス変数は次のsetosa
とおりです。
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
そしてnaiveBayes
正しく予測されました:
setosa versicolor virginica
[1,] 1.00000 2.981309e-18 2.152373e-25
しかし、test
データ ポイントを予測しようとすると、間違った結果が返されます。1 つのデータ ポイントのみの予測を探しているのに、予測どおりに 4 行が返されるのはなぜですか? 私は間違っていますか?