Ich habe einen Datensatz mit unausgeglichenen Klassen. Drei Klassen machen etwa 60% der Daten aus. Außerdem habe ich verschiedene Testaufteilungen, die ein Ungleichgewicht verursachen. Zum Beispiel:
Zugset: label_1 ... label_n
Testsatz: label_1, label_3, label_9
Dies bedeutet, dass obwohl ich nur 3 Etiketten in meinem Testsatz habe, diese möglicherweise als 1 von n Etiketten vorhergesagt werden kann. Wenn ich also sklearn.metrics.precision_recall_fscore_support verwende, erhalte ich eine Matrix mit vielen Nullen.
Mein Problem ist, dass ich einen durchschnittlichen F-Score über alle Klassen hinweg erhalten muss, anstatt einen Wert pro Klasse. Nur einen Durchschnitt der von der obigen sklearn-Funktion zurückgegebenen Matrix zu nehmen, ist jedoch immer ein sehr niedriger Wert, da es so viele Nullen gibt. Andererseits macht es für mich auch keinen Sinn, einen Durchschnitt über Werte ungleich Null zu nehmen, da die Gesamtzahl der möglichen Vorhersagen die Gesamtzahl der Klassen sein sollte.
Gibt es in diesem Fall eine gute Möglichkeit, einen Durchschnitt zu ermitteln? Ich habe versucht, die Optionen für Mikro, Makro und gewichteten Durchschnitt zu verwenden, bin mir aber nicht sicher, welche richtig ist.
Könnte mir bitte jemand dabei helfen?
quelle