2011-07-08 16 views
11

私はデータフレームを持っています。最初の列には私のモデルの予測スコア(0から100の範囲、小さい値はクラスAであると予想され、大きな値はクラスBであることが期待されます)を含み、2列目は、クラスA "または"クラスB ")。R:予測モデルの混乱行列を作成する方法は?

異なるカットオフ値のRを持つ混乱行列を得るには、値を定義する場所が決まっていないので、< 20または<をクラスAとしてまだですか?

この比較をRと効率的に行うにはどうすればよいですか?これを行うには、いくつかの方法があります

答えて

18

は、あなたのデータを再現可能な例が望まれているだろう:

set.seed(12345) 
test <- data.frame(pred=c(runif(50,0,75),runif(50,25,100)), group=c(rep("A",50), rep("B",50))) 
table(test$pred<50,test$group) 

  A B 
    FALSE 18 34 
    TRUE 32 16 

を与えるので、これは32 Aさんは、50と34のBの下にあったと言います50以上であったが、18 Aは50以上(間違って分類された)であり、16 Bは50未満であった(間違って分類された)

set.seed(12345) 
test <- data.frame(pred=c(runif(50,0,60),runif(50,40,100)), group=c(rep("A",50), rep("B",50))) 
table(test$pred<50,test$group) 

  A B 
    FALSE 8 40 
    TRUE 42 10 

となります。この例では、選択したサンプリングの原因で分類がはるかに優れています。

この中に「50」は、テーブルのみ生成するので、あなたが、50よりも予測が低く持っていない場合、これは動作しません

table(test$pred<50,test$group) 
+1

など、30、20、あなたが欲しいものに変更することができますTRUEの行であり、4 * 4の行列ではありません。 – Rhubarb

+0

私はgeneralizeへの答えを編集しました。 *(私は上記のコメントで2 * 2の行列を意味しました)。 – Rhubarb

関連する問題