Home > Software engineering >  f1_score() takes 2 positional arguments but 3 positional arguments (and 1 keyword-only argument) wer
f1_score() takes 2 positional arguments but 3 positional arguments (and 1 keyword-only argument) wer

Time:12-29

 from sklearn.metrics import f1_score


 F1_score = f1_score(lab2d, pred2d, [0, 1, 2, 3], average=None)
print("Validation Dice Coefficient.... ")
print("Background:", F1_score[0])
print("CSF:", F1_score[1])
print("GM:", F1_score[2])
print("WM:", F1_score[3])
 ```

This is the error

f1_score() takes 2 positional arguments but 3 positional arguments (and 1  keyword-only argument) were given

I tried to pass the arguments in diffrerent ways but still got the same error

CodePudding user response:

As the documentation for version 1.2.0 states, you need to call the function like

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='macro')

Please note that it accepts 3 arguments: y_true, y_pred and keyword argument average. You are trying to put one extra argument in: [0, 1, 2, 3]. Either it or one of the previous two arguments (lab2d or pred2d) should be removed.

In older versions, however, it was possible to use labels argument on this position without naming it explicitly. If that's the case, you might try to write this line like

f1_score(lab2d, pred2d, labels=[0, 1, 2, 3], average=None)
  • Related