F1 балл за переключенные метки - PullRequest
0 голосов
/ 26 октября 2019

Я хочу оценить метод кластеризации с некоторыми синтетическими данными, используя несколько оценок (NMI, ARI, F1) из sklearn. В то время как NMI и ARI работают нормально, у меня есть проблемы, связанные с оценкой F1, когда метки переключаются, например, истинные метки равны [0, 0, 0, 1, 1, 1], а прогнозируемые метки - [1, 1, 1, 0, 0, 0]. Для кластеризации это идеальный результат, поскольку оба кластера были правильно идентифицированы, переключаются только метки: кластер 1 имеет метку 0 и наоборот. Оценка F1, кажется, не в состоянии справиться с этим, поскольку мой код дает оценку F1 0.0. Я предполагаю, что это происходит из-за того, что метки не имеют одно и то же имя / номер, однако я не могу вручную переключать имена меток для каждого кластера, так как это способ много работать, особенно для огромных наборов данных, так есть ли более общее решение для этого?

Пример кода:

from sklearn.metrics import f1_score

if __name__ == '__main__':
    labels = [0, 0, 0, 1, 1, 1]
    pred = [1, 1, 1, 0, 0, 0]
    print(f1_score(labels, pred, average='micro')

1 Ответ

1 голос
/ 26 октября 2019

Счет F1 рассчитывается как:

2*((precision*recall)/(precision+recall))

Как я уверен, вы знаете, точность определяется как:

TP/(TP+FP)

Напомним:

TP/(TP+FN)

Таким образом, в приведенном выше случае TP=0, FP=3, FN=3

Следовательно, точность и отзыв равны 0. Что, в свою очередь, делает ваши вычисления в баллах F1 похожими на

2*((0*0)/(0+0))

На самом деле, я считаю, что если вы делите на ноль, это может привести к ошибке, но, возможно, scikit learn обрабатывает это по-разному.

Так что в вашем случае вы должны будете правильно обозначить прогноз, чтобы он соответствовал основополагающей истине, если это действительно так. Счет Ф1 никогда не узнает эту информацию. Проблема может заключаться в том, как метки применяются к вашим кластерам или вашим тестовым данным, а не в балле f1.

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