Я хочу оценить метод кластеризации с некоторыми синтетическими данными, используя несколько оценок (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')