恐らくどのサイトを見ても計算方法は載っていて
それに沿って何度も計算しました。
以下のプログラムで計算した結果と、
HPに乗っている計算方法で公式に沿って電卓で計算した結果がどうしても合いません。
プログラムが異なるのか、計算の考え方が違うのか、ご教授ください。
以下のプログラムは、プログラムの勉強サイトAidemyの「機械学習概論3.1.5性能評価指標を実装する」の回答に書かれているものを参考にしています。
URL https://aidemy.net/courses/2010/exercises/HJglFn8sUez
★プログラムによる計算
Python
1from sklearn.metrics import precision_score 2from sklearn.metrics import confusion_matrix 3from sklearn.metrics import recall_score, f1_score 4 5# データを格納します。今回は0が陽性、1が陰性を示しています 6y_true = [0,0,0,1,1,1] 7y_pred = [1,0,0,1,1,1] 8confmat = confusion_matrix(y_true, y_pred) 9#y_trueには、正解データの実際のクラスが配列で格納 10#y_predには、予想されたクラスが配列で格納 11# 結果を出力します。 12print (confmat) 13 14# 適合率と再現率をあらかじめ計算します 15precision = precision_score(y_true, y_pred) 16recall = recall_score(y_true, y_pred) 17print(precision) 18print(recall)
プログラムの算出した答え
[[2 1]
[0 3]]
0.75←precision 適合率
1.0←recall再現率
★以下手計算
配列の0が陽性positive、1が陰性negative
(TP)事実陽性・予想陽性[2 1]←(FN)事実陰性・予想陽性
(FP)事実陽性・予想陰性[0 3]←(TN)事実陰性・予想陰性
○適合率/精度(precision):陽性と予測されたデータのうち、実際に陽性であるものの割合
TP/FP+TP
2/(0+2)=2/2=1
○ 再現率(recall):実際の陽性のデータのうち、陽性と予測できたものの割合
TP/ FN+TP
2/(1+2)=2/3=0.66
となり、プログラムと合いません。
計算の考え方が異なるのか、プログラムが異なるのか?
気が付いた点がありましたらご指摘ください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/21 07:57 編集
2018/03/20 16:06