2017-11-14 17 views
-1

私はランダムフォレスト分類子を構築しています。分類と関連する確率を返したいと思います。私の結果変数は1または0です.1は私が追跡したいポジティブなクラスです。私は確率が陽性結果の確率を返したかったランダムフォレスト()は、肯定結果と分類の確率を返します

no_of_trees <- 50 
rf.under <- randomForest(as.factor(result) ~ . , 
         data=data_balanced_under, 
         importance=TRUE, 
         ntree=no_of_trees) 

prediction <- predict(rf.under, df.test) 
probability <- predict(rf.under, df.test, type="prob") 
submit <- data.frame(predicted = prediction, actual = df.test$result) 

は、しかし、私が手:私の出力で

> probability 
      0 1 
242339 1.00 0.00 
3356431 1.00 0.00 
138327 1.00 0.00 
111327 1.00 0.00 
3307151 1.00 0.00 
222414 1.00 0.00 
1817297 1.00 0.00 
3860922 1.00 0.00 
1710532 1.00 0.00 

。左の数字は何ですか?彼らが何であるかわからないのですか?私は彼らが行番号だと思ったが、なぜ1,2,3 ..から索引付けされていないのだろうか? probability[,2]と結びついて結果が出る確率は高くなると思うが、うまくいきません。

理想的には、submitデータフレームに確率を含めたいと考えていますが、現時点ではそうすることはできません。

また、混同行列は私を与える:

confusionMatrix(data = submit$predicted, reference = df.test$result , positive="1") 

#Reference 
Prediction  0  1 
     0 913730 160 
     1 50872 8219 

は、この周りをスイッチすることが可能ですか?最初にポジティブなクラス "1"を表示するように?

+2

[here](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-)に記載されているように、データの再現可能な例を提供してください。再現可能な例)。 –

答えて

1

probabilityは、クラスごとの確率を返します(ここでは2つのクラスがあり、2つの列があります)。 これは、マルチクラス分類を有効にするためにこのように構築されています。

あなたは非常にアンバランスなクラス(ものの0.8%)を持っているのでresult == 1の確率はちょうどあなたの分類器は、それが常に0であることを予測する傾向があるprobability

の2列目を取りたい場合は...のだからあなたの確率result==1はほとんどのexemplesでは0に近いです。これがあなたの確率が確率のように見えない理由です。

probabilityのインデックスについてはrownames(df.test)、インデックスはdf.testです。私はあなたがランダムに分割したと思いますdf.testdfから。したがって、インデックスは1で始まらない。

+0

こんにちはEmmanuael、確かに....それは意味を作る、私は80/20のテストデータを得るためにサンプリングした。 – GRS

関連する問題