Как рассчитать auc_score и f_score? - PullRequest
0 голосов
/ 23 апреля 2020

Я хочу рассчитать и напечатать показатели auc_score, f_score и других, используя scickit learn в python? Я делаю НЛП, в начале моего набора список слов, я векторизовать их, чтобы сделать некоторые предсказания. Мои y_predi имеют значение true или false, мне нужно преобразовать их в значения (0 и 1)

Мой код:

    #Vectorization
        x_test_vect = pipe_vect.transform(x_test)

        #Create predictive set
        y_pred = model.predict_proba(x_test_vect)

     #Calculate treshold
        fpr, tpr, thresholds = roc_curve(y_test, y_pred[:, 1])
        spr =  np.array(tpr) + (1 - np.array(fpr))
        threshold = thresholds[np.argmax(spr)]
        y_predi = [y >= threshold for y in y_pred[:, 1]]

    #Calculate AUC score
        AUC = roc_auc_score(y_test, y_predi[:, 1])

Мой отпечаток:

y_pred [[0.89882979 0.10117021]
 [0.87       0.13      ]
 [0.65       0.35      ]
 [0.94122287 0.05877713]
 [0.50868421 0.49131579]
 [0.97847458 0.02152542]
 [0.99       0.01      ]
 [0.21       0.79      ]
 [0.94       0.06      ]
 [0.94604348 0.05395652]]
y_test [1 0 0 0 1 0 0 1 0 0]
y_predi [False, False, True, False, True, False, False, True, False, False]
threshold 0.2407608695652174

ошибка:

AUC = roc_auc_score(y_test, y_predi[:, 1])
TypeError: list indices must be integers or slices, not tuple

1 Ответ

0 голосов
/ 23 апреля 2020

вы пытаетесь нарезать y_predi неправильно. Из печати это 1-й массив, и вы можете дать его напрямую. Когда вы пытаетесь выполнить y_predi [:, 1], он пытается дать первый столбец для всех строк, но ваш массив равен 1-му, а 1-й столбец отсутствует, поэтому возникает ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...