Mi chiedo se esiste un modo per specificare la funzione di costo personalizzato in sklearn/python? Il mio vero problema ha 7 classi diverse, ma per renderlo più chiaro assumiamo che voglio specificare un costo diverso per l'errata classificazione di un problema con 3 classi diverse e sono principalmente interessato al fatto che il mio modello distingua correttamente tra classe 1 e classe 3 .Ineguali costi di errata classificazione in python/sklearn
- se l'osservazione ha classe 1 e modello prevede di classe 1, penalità è 0 (corretta classificazione)
- se l'osservazione ha classe 1 e il modello predice classe 2, pena è 1
- se il punto ha classe 1 e il modello prevede la classe 3, la penalità è 2
- se punto ha classe 2 e modello prevede di classe 2, penalità è 0 (corretta classificazione)
- se punto ha classe 2 e modello predice classe 3, pena è 1
- se il punto ha classe 2 e il modello predice classe 1, pena è 1
- se il punto ha classe 3 e modello predice classe 3, penalità è 0 (clas corretti sificazione)
- se il punto ha classe 3 e modello prevede di classe 2, pena è 1
- se il punto ha classe 3 e modello prevede di classe 1, penalità è 2
Quindi la matrice di pena sarebbe il seguente aspetto:
Class 1 Class 2 Class 3
Class 1 0 1 2
Class 2 1 0 1
Class 3 2 1 0
Suppongo che il parametro 'class_weight' in sklearn fa qualcosa di simile, ma accetta un dizionario piuttosto che una matrice. Passare class_weight = {1: 2,1: 1,1: 2} aumenterebbe semplicemente il peso per classificare erroneamente la classe 1 e la classe 3, tuttavia, voglio che il mio modello ottenga una penalità maggiore specificatamente quando sceglie la classe 1 e la vera classe è classe 3 e viceversa.
È possibile fare qualcosa di simile in sklearn? Potrebbero esserci altre librerie/algoritmi di apprendimento che consentono un ineguale costo di errata classificazione?