私はF1スコアがsklearn
である理由を理解しようとしています。なぜこれらの三つの値私は理解していないsklearnを使ってF1スコアを計算する
0.785744255639 0.769527615775 0.984532095901
:
F1 = 2 * (precision * recall)/(precision + recall)
マイコード:
from sklearn.metrics import f1_score, precision_score, recall_score
...
fmeasure1 = f1_score(true_output, predicted_output, average="macro")
fmeasure2 = f1_score(true_output, predicted_output, average="micro")
precision = precision_score(true_output, predicted_output, average="macro")
recall = recall_score(true_output, predicted_output, average="macro")
print 2*(precision*recall)/(precision + recall), fmeasure1, fmeasure2
私は私のデータの取得値があるが、私はそれは次のように計算されていることを理解します互いに異なる。私は文書hereを読んでみましたが、私はまだかなり失われています。
私のデータセットはmutliクラスであり、本質的に高度に不均衡です。ここでの値のうち、「正しい」値はどれですか、また拡張子は「平均」(つまり「なし」、「ミクロ」、「マクロ」、「ウェイト」)のどちらのパラメータですか?
ありがとうございました。洞察力は非常に貴重です。戻り値で
を私は理解していません。各F1スコアは特定のクラスのためのものですか? – meraxes
ドキュメントの6行目:マルチクラスとマルチラベルの場合、これは各クラスのF1スコアの加重平均です。 – SerialDev
申し訳ありませんが、入力いただきありがとうございます。私の質問はまだ残っています:なぜこれらの値が返される値と異なるのですか?2 *(precision * recall)/(precision + recall)? – meraxes