Ошибка значения: TextPredictor должен быть двоичным классификатором для кривой точного вызова

#python #machine-learning #scikit-learn #precision-recall #ktrain

Вопрос:

Я пытаюсь построить кривую точного отзыва для классификации двоичного текста с помощью ktrain (оболочка для BERT) и получаю следующую ошибку

 ---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-142-9069d96b6d6b> in <module>
----> 1 disp = plot_precision_recall_curve(predictor, df_testing.description.values, df_testing.pred_class)
      2 disp.ax_.set_title('2-class Precision-Recall curve: '
      3                    'AP={0:0.2f}'.format(average_precision))

C:condalibsite-packagessklearnmetrics_plotprecision_recall_curve.py in plot_precision_recall_curve(estimator, X, y, sample_weight, response_method, name, ax, **kwargs)
    145         estimator.__class__.__name__))
    146     if not is_classifier(estimator):
--> 147         raise ValueError(classification_error)
    148 
    149     prediction_method = _check_classifer_response_method(estimator,

ValueError: TextPredictor should be a binary classifier
 

Мой предсказатель таков <ktrain.text.predictor.TextPredictor at 0x2d9361e61c8> .
Есть ли способ, которым я могу преобразовать свой предиктор в двоичный классификатор?

Комментарии:

1. Было бы полезно знать, что возвращает ваш предсказатель? Является ли это вероятностью для более чем двух классов? Или plot_precision_recall_curve вы ожидаете истинных двоичных предсказаний, например [0, 1] ? Тогда у вас, вероятно , есть логарифмические вероятности (что-то вроде [-2.3, -0.3]) или логарифмические вероятности с мягкой осью (например, [0.2, 0.8]). Еще несколько идей или кода могли бы помочь. Приветствую Тебя, Патрик

2. допустим, я публикую свой текст, который я хочу классифицировать как значение «тест». Тогда вот как выглядят мои выходные данные: печать(predictor.predict_proba(тест)) печать(predictor.predict(тест)) [0.7587824 0.24121764] CLASSA Для модели рассматриваются только два класса. КЛАСС А и КЛАСС Б. Да, я думаю, plot_precision_recall_curve ожидает истинных двоичных предсказаний. Не знаю, как это преобразовать.

3. Зависит от того, в каком формате будет возвращен ваш прогноз. Если это массив numpy, вы можете использовать что-то вроде numpy.around или с тензорами tf tf.math.round

4. Спасибо вам за это. У меня есть еще один пакет/функция skplt.metrics.plot_precision_recall_curve (), Он просто учитывает истинный класс и вероятности прогнозирования, и мне не нужно было вводить оценщик/предиктор. И график был построен успешно. Спасибо за вашу помощь, так как это помогло мне лучше понять функцию.

5. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.