Ich verwende Support Vector Regression als Schätzer in GridSearchCV. Aber ich möchte die Fehlerfunktion ändern: Anstatt den Standard (R-Quadrat: Bestimmtheitsmaß) zu verwenden, möchte ich meine eigene benutzerdefinierte Fehlerfunktion definieren.Wie erstelle ich eine eigene Scorer-Funktion in scikit-learn?
Ich habe versucht, ein mit make_scorer
zu machen, aber es hat nicht funktioniert.
Ich habe die Dokumentation gelesen und festgestellt, dass es möglich ist, custom estimators zu erstellen, aber ich brauche nicht den gesamten Schätzer neu zu erstellen - nur die Fehler/Scoring-Funktion.
Ich glaube, ich kann es eine aufrufbare als Scorer durch die Definition, wie es in der docs sagt.
Aber ich weiß nicht, wie einen Schätzer verwenden: in meinem Fall SVR. Müsste ich zu einem Klassifizierer (wie SVC) wechseln? Und wie würde ich es benutzen?
Meine benutzerdefinierte Fehlerfunktion ist wie folgt:
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
Die Variable M
ist nicht null/null. Ich habe es einfach auf Null gestellt.
Würde jemand in der Lage ein Beispiel Anwendung dieser benutzerdefinierten Scoring-Funktion zu zeigen? Danke für Ihre Hilfe!
Beispiel dafür: (Schätzer, X, y) – daniel2014
denken Sie daran, eine der Antworten als die gute zu markieren. Danke :) – astrojuanlu