Interpreting Machine Learning Classification Metrics I'm trying to understand the results of a classifier I used to predict two possible classes. Here is what I get:
     Precision     Recall     F1-score     Support

 0      0.97        1.00        0.98        341091
 1      0.60        0.18        0.27        12629

 Avg    0.96        0.97        0.96        353720

If I'm trying to predict Class 1, does this model have any value? Can I improve the results of Class 1 prediction?
 A: The classification report shows that your estimator is good at recognizing class 0 (both precision and recall are close to 1 as is the f1-score, which is combination of both). However it fails for class 1.
This can be caused by using an estimator (or its parametrization) that is sensitive to not-balanced dataset. Look at the support -- there is almost 30-times more examples of the class 0 than the class 1! Many scikit-learn estimators have parameter to compensate this imbalance during training (or allow you to assign weights to the training samples (e.g., give higher weights to less frequent samples of class 1), so that the importance of the few examples of class 1 is raised.
Imagine an extreme case with classifier that always answers 0. For class 0 it would have recall 1 (all class 0 samples discovered) and precision 0.96 (= 341091 / 353720). For class 1 the precision would be ill-defined and recall would be 0. However the overall accuracy would be 0.96 (341091 correctly recognized cases out of 353720). By the way this shows that accuracy is not a good metric for imbalanced sets.
