Rの混同行列の精度と精度を計算するために利用できるツール/ Rパッケージはありますか?
はい、Rの精度と精度は 混同行列 で計算できます。 Caret package を使用します。
次に例を示します。
lvs <- c("normal", "abnormal")
truth <- factor(rep(lvs, times = c(86, 258)),
levels = rev(lvs))
pred <- factor(
c(
rep(lvs, times = c(54, 32)),
rep(lvs, times = c(27, 231))),
levels = rev(lvs))
xtab <- table(pred, truth)
# load Caret package for computing Confusion matrix
library(caret)
confusionMatrix(xtab)
そして、xtabの混同行列は次のようになります:
Confusion Matrix and Statistics
truth
pred abnormal normal
abnormal 231 32
normal 27 54
Accuracy : 0.8285
95% CI : (0.7844, 0.8668)
No Information Rate : 0.75
P-Value [Acc > NIR] : 0.0003097
Kappa : 0.5336
Mcnemar's Test P-Value : 0.6025370
Sensitivity : 0.8953
Specificity : 0.6279
Pos Pred Value : 0.8783
Neg Pred Value : 0.6667
Prevalence : 0.7500
Detection Rate : 0.6715
Detection Prevalence : 0.7645
'Positive' Class : abnormal
だから、ここにあなたが望むすべてがあります。
@過酷なトリベディ
byClassを使用すると、precisionおよびrecall概要から。 PPVは精度です。感度は想起です。 https://en.wikipedia.org/wiki/Precision_and_recall
library(caret)
result <- confusionMatrix(prediction, truth)
precision <- result$byClass['Pos Pred Value']
recall <- result$byClass['Sensitivity']
ここでは、精度を引き出してf-measureを計算するためにリコールしたいと思います。
f_measure <- 2 * ((precision * recall) / (precision + recall))
健全性チェック用のこの便利なオンライン計算機も見つけました。 http://www.marcovanetti.com/pages/cfmatrix/?noc=2
-bg
他の誰かが探している場合:上記のBGAの回答のおかげで、confusionMatrix()
出力の読み方が明確になり、F [メジャー]をresult$ByClass
出力からF1としてすぐに取得できることに気付きました。
result$byClass
Sensitivity Specificity Pos Pred Value Neg Pred Value
0.9337442 0.8130531 0.8776249 0.8952497
Precision Recall F1 Prevalence
0.8776249 0.9337442 0.9048152 0.5894641
Detection Rate Detection Prevalence Balanced Accuracy
0.5504087 0.6271571 0.8733987
上記のコメントと同じ式で以下のf_measure
を計算すると、0.9048152も得られます。
results$overall
から精度を取得することもできます
result$overall
Accuracy Kappa AccuracyLower AccuracyUpper AccuracyNull AccuracyPValue
8.841962e-01 7.573509e-01 8.743763e-01 8.935033e-01 5.894641e-01 0.000000e+00
McnemarPValue
2.745521e-13
または、results
の平衡型精度を使用します
誰かが私と同じ問題を抱えている場合、caret
のメソッドconfusionMatrix()
は確かに感度/特異性を提供します。 ただし、タイプtrain
のオブジェクトが供給された場合、別のメソッドconfusionMatrix.train()
が実行されますnotはこの情報を持っています。
解決策は、data
およびreference
をtrain
オブジェクト(つまり、それぞれ_$pred$pred$
_および_$pred$obs
_)からconfusionMatrix()
方法。