Cum să stabiliți greutăți de clasă pentru clase dezechilibrate în Keras

Știu că există o posibilitate în Keras cu dicționarul de parametri class_weights la ajustare, dar nu am găsit niciun exemplu. Ar fi cineva destul de amabil să le ofere unul?

greutăți

Apropo, în acest caz, practica adecvată este pur și simplu să ponderăm clasa minoritară proporțional cu subreprezentarea sa.

Dacă vorbiți despre cazul normal, în care rețeaua dvs. produce o singură ieșire, atunci presupunerea dvs. este corectă. Pentru a vă forța algoritmul să proceseze fiecare instanță a fișierului clasa 1 ca 50 de cazuri ale clasa 0, trebuie să:

Definiți un dicționar cu etichetele dvs. și cu greutățile asociate acestora

Introduceți dicționarul ca parametru:

EDIT: "tratați fiecare instanță a fișierului clasa 1 ca 50 de cazuri ale clasa 0 "înseamnă că, în funcția dvs. de pierdere, atribuiți o valoare mai mare acestor instanțe. Prin urmare, pierderea devine o medie ponderată, unde greutatea fiecărui eșantion este specificată de clasa de greutate și clasa sa corespunzătoare.

Din documentele Keras: greutate_clasă: index mapare opțională a dicționarului (numere întregi) la valoarea greutății (float), utilizată pentru funcția de slăbire (numai în timpul antrenamentului).

Puteți pur și simplu să implementați clasa_ponderă a lui sklearn:

Să importăm mai întâi modulul

Pentru a calcula greutatea clasei, procedați în felul următor: