Eu tenho um conjunto de dados com classes desequilibradas. Três classes compõem cerca de 60% dos dados. Além disso, tenho divisões de teste diferentes que causam um desequilíbrio. Por exemplo:
Conjunto de trens: label_1 ... label_n
Conjunto de teste: label_1, label_3, label_9
Isso significa que, embora eu tenha apenas três rótulos no meu conjunto de testes, ele pode ser previsto como 1 de n rótulos. Então, quando eu uso sklearn.metrics.precision_recall_fscore_support , recebo uma matriz com muitos zeros.
Meu problema é que preciso obter uma pontuação F média em todas as classes, em vez de um valor por classe. No entanto, apenas uma média da matriz retornada da função sklearn acima sempre será um valor muito baixo, pois existem muitos zeros. Por outro lado, assumir uma média acima de valores diferentes de zero também não faz sentido para mim, pois o número total de previsões em potencial deve ser o número total de classes.
Existe uma boa maneira de obter uma média nesse caso? Eu tentei usar as opções micro, macro e média ponderada, mas não tenho certeza de qual delas está certa.
Alguém poderia me ajudar com isso?
fonte