web-dev-qa-db-ja.com

R:予測モデルの混同行列を作成するにはどうすればよいですか?

データフレームがあります。最初の列にはモデルの予測スコア(0〜100の範囲、小さい値はクラスAにあると予想され、大きい値はクラスBにあると予想される)が含まれ、2番目の列にはエントリの実際の分類が含まれます( "クラスA "または"クラスB ")。

まだ20未満または50未満の値をクラスAとして定義する必要がある場所を判断できないため、異なるカットオフ値のRを使用して混同行列を取得する方法

Rでこの比較を効率的に行う方法は?

15
user2718

これにはいくつかの方法がありますが、データを使用した再現可能な例が望ましいでしょう。

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」は、20、30など、好きなように変更できます。

table(test$pred<50,test$group)
20
nzcoops