Comment créer/personnaliser votre propre meilleur buteur de la fonction dans scikit-learn?

Je suis en utilisant Régression À Vecteurs De Support comme un estimateur dans GridSearchCV. Mais je veux changer la fonction d'erreur: au lieu d'utiliser la valeur par défaut (R-squared: coefficient de détermination), je tiens à définir ma propre fonction d'erreur.

J'ai essayé de faire un avec make_scorer, mais il ne fonctionne pas.

J'ai lu la documentation et trouvé qu'il est possible de créer personnalisé estimateurs, mais je n'ai pas besoin de refaire l'ensemble de l'estimateur - seulement l'erreur/fonction de notation.

Je pense que je peux le faire par la définition d'un callable en tant que correcteur, comme il est dit dans le docs.

Mais je ne sais pas comment utiliser un estimateur: dans mon cas, SVR. Aurais-je passer à un classificateur (comme SVC)? Et comment pourrais-je l'utiliser?

Mon custom de la fonction d'erreur est comme suit:

def my_custom_loss_func(X_train_scaled, Y_train_scaled):
    error, M = 0, 0
    for i in range(0, len(Y_train_scaled)):
        z = (Y_train_scaled[i] - M)
        if X_train_scaled[i] > M and Y_train_scaled[i] > M and (X_train_scaled[i] - Y_train_scaled[i]) > 0:
            error_i = (abs(Y_train_scaled[i] - X_train_scaled[i]))**(2*np.exp(z))
        if X_train_scaled[i] > M and Y_train_scaled[i] > M and (X_train_scaled[i] - Y_train_scaled[i]) < 0:
            error_i = -(abs((Y_train_scaled[i] - X_train_scaled[i]))**(2*np.exp(z)))
        if X_train_scaled[i] > M and Y_train_scaled[i] < M:
            error_i = -(abs(Y_train_scaled[i] - X_train_scaled[i]))**(2*np.exp(-z))
    error += error_i
    return error

La variable M n'est pas null/zero. Je viens de mettre à zéro pour des raisons de simplicité.

Quelqu'un serait-il en mesure de montrer un exemple d'application de cette coutume fonction de notation? Merci pour votre aide!

Exemple: (estimateur, X, y)
n'oubliez pas de marquer l'une des réponses que de la bonne. Merci 🙂

OriginalL'auteur daniel2014 | 2015-09-04