2016-05-30 9 views

Antwort

5

Wenn Sie wollen voll Balance (jede Klasse als ebenso wichtig behandeln) Sie einfach class_weight='balanced' passieren können, wie es in dem angegebenen docs:

Der „balanced“ Modus, um die Werte von y verwendet, um automatisch Gewichte umgekehrt proportional zur Klasse Frequenzen in den Eingangsdaten einzustellen als n_samples/(n_classes * np.bincount(y))

+0

Bitte beachten Sie, dass es sich um einen Parameter des Klassifikators (des Konstruktors) handelt, nicht von 'fit'. –

4

Wenn die Frequenz der Klasse A 10% beträgt und die Frequenz der Klasse B 90% beträgt, dann wird die Klasse B die dominant geworden Klasse und der Entscheidungsbaum wird zu den Klassen voreingenommen werden, die

In diesem Fall dominant sind, können Sie ein dic {A:9,B:1} zum Modell passieren das Gewicht jeder Klasse zu spezifizieren, wie

clf = tree.DecisionTreeClassifier(class_weight={A:9,B:1}) 

Die class_weight='balanced' wird auch funktionieren, es einfach automatisch Gewichte

nach dem Anteil jeder Klasse Frequenzen einstellt

enter image description here

Nachdem ich class_weight='balanced' verwenden, die Satznummer jeder Klasse ist gleich geworden (um 88923)

+0

Ich bin verwirrt über die Werteliste aus dem class_weight wird "ausgeglichen". Bedeutet dies, dass der Klassifikator jede Klasse gleichmäßig wiegt? Und wenn ja, wie wird das durch den Entscheidungsbaum verbreitet? Wie ändert sich die Werteliste für jeden Knoten in der Struktur? Ich frage, weil ich auf meiner eigenen Ausgabe verwirrt bin, die ich sehe, wenn ich meinen Klassifikator laufen lasse. – OfLettersAndNumbers

Verwandte Themen