Python make_scorer fornisce output errati per Root Mean Square Logarithmic Error
Oct 01 2020
Voglio generare una ricerca griglia per la quale ho bisogno del scoringparametro in base al quale avverrà la ricerca. Ho definito la seguente funzione per fornirmi un file Root Mean Squared Logarithmic Error. Ma credo che il segnapunti stia considerando il valore maggiore come un punteggio migliore, mentre dovrebbe considerare il valore inferiore come punteggio migliore. Per favore fatemi sapere se ho definito un segnapunti corretto.
Funzione per RMSLE
def score_func(y_true, y_pred, **kwargs):
y_true = np.abs(y_true)
y_pred = np.abs(y_pred)
return np.sqrt(mean_squared_log_error(y_true, y_pred))
scorer = make_scorer(score_func)
Ho dovuto usare np.absnel codice sopra, altrimenti stava dando un errore che RMSLE non può essere utilizzato quando Target ha valori negativi.
Risposte
datamansahil Oct 01 2020 at 08:29
Ecco qui:
import math
#Function to calculate Root Mean Squared Logarithmic Error (RMSLE)
def rmsle(y, y_pred):
assert len(y) == len(y_pred)
terms_to_sum = [(math.log(y_pred[i] + 1) - math.log(y[i] + 1)) ** 2.0 for i,pred in enumerate(y_pred)]
return (sum(terms_to_sum) * (1.0/len(y))) ** 0.5