1

私は現在、Coursera から「実践的な機械学習」コースを受講しており、予測機能で奇妙な動作に遭遇しています。尋ねられた質問は、ツリーをトレーニングしてからいくつかの予測を行うことでした。ここに回答を投稿しないように、問題に使用されるデータセットを変更しました。コードは次のとおりです。

rm(list = ls())
library(rattle)
data(mtcars)
mtcars$vs = as.factor(mtcars$vs)
set.seed(125)
model = train(am ~ ., method = 'rpart', data = mtcars)
print(model)
fancyRpartPlot(model$finalModel)

sampleData = mtcars[1,]
sampleData[1,names(sampleData)] = rep(NA, length(names(sampleData)))
sampleData[1, c('wt')] = c(4)
predict(model, sampleData[1,], verbose = TRUE)

上記のコードには、2 つの主要なセクションがあります。1 つ目はツリーを構築し、2 つ目 (ここsampleDataから開始) は、モデルを適用するデータの小さなサンプル セットを作成します。元のデータとまったく同じ構造であることを確認するには、トレーニング データセットの最初の行をコピーし、すべての列を に設定しますNA。次に、デシジョン ツリーに必要な列 (この場合はwt変数) だけにデータを入れます。

上記のコードを実行すると、次の結果が得られます。

Number of training samples: 32 
Number of test samples:     0 

rpart : 0 unknown predictions were added

numeric(0)

参考までに、ツリーの構造は次のとおりです。

fancyRpartPlot(model$finalModel)

ここに画像の説明を入力

predict関数が私が提供したの予測値を返さない理由を誰かが理解するのを手伝ってくれますsampleDataか?

4

1 に答える 1

0

残念ながら、分割でrpartのみwt変数を使用したとしても、予測には他の変数が存在する必要があります。サンプル列を含むデータ セットを使用します。

> predict(model, mtcars[1,])
[1] 0.8571429

マックス

于 2014-06-10T14:30:30.417 に答える