I'm working on a multiclass classification problem using python and scikit-learn. Currently, I'm using the classification_report
function to evaluate the performance of my classifier, obtaining reports like the following:
>>> print(classification_report(y_true, y_pred, target_names=target_names))
precision recall f1-score support
class 0 0.50 1.00 0.67 1
class 1 0.00 0.00 0.00 1
class 2 1.00 0.67 0.80 3
avg / total 0.70 0.60 0.61 5
To do further analysis, I'm interesting in obtaining the per-class f1 score of each of the classes available. Maybe something like this:
>>> print(calculate_f1_score(y_true, y_pred, target_class='class 0'))
0.67
Is there something like that available on scikit-learn?
Implementation. In the Python sci-kit learn library, we can use the F-1 score function to calculate the per class scores of a multi-class classification problem. We need to set the average parameter to None to output the per class scores.
Most commonly used metrics for multi-classes are F1 score, Average Accuracy, Log-loss. There is yet no well-developed ROC-AUC score for multi-class.
Taken from the f1_score
docs.
from sklearn.metrics import f1_score
y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 2, 1, 0, 0, 1]
f1_score(y_true, y_pred, average=None)
Ouputs:
array([ 0.8, 0. , 0. ])
Which is the scores for each class.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With