I run a python program that calls sklearn.metrics's methods to calculate precision and F1 score. Here is the output when there is no predicted sample:
/xxx/py2-scikit-learn/0.15.2-comp6/lib/python2.6/site-packages/sklearn/metr\
ics/metrics.py:1771: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 due to no predicted samples. 'precision', 'predicted', average, warn_for)
/xxx/py2-scikit-learn/0.15.2-comp6/lib/python2.6/site-packages/sklearn/metr\
ics/metrics.py:1771: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no predicted samples.
'precision', 'predicted', average, warn_for)
When there is no predicted sample, it means that TP+FP is 0, so
precision defined as
TP/(TP+FP)) is 0/0
not defined,
F1 score (defined as 2TP/(2TP+FP+FN)) is 0 if FN is not zero.
In my case, sklearn.metrics also returns the accuracy as 0.8, and recall as 0. So FN is not zero.
But why does scikilearn says F1 is ill-defined?
What is the definition of F1 used by Scikilearn?