Wie kann ich mehrere optionale Parameter verwenden?Python

Python-Programme
Anonymous
 Wie kann ich mehrere optionale Parameter verwenden?

Post by Anonymous »

Ich habe eine Funktion, die mehrere ML-Modelle erstellt, sie vergleicht und ein Ensemble der besten n Modellergebnisse zurückgibt. Ich möchte, dass der Benutzer die Möglichkeit hat, Parameter für jedes Modell einzeln zu übergeben, ansonsten aber Standardparameter einzugeben. Ich möchte dafür sorgen, dass die Eingabe von Parametern intuitiv und einfach ist.
So sieht mein Code aus:

Code: Select all

def buildModel(X, y, n, rfParams, knnParams, SVCParams, lrParams, lgbParams, xgbParams):
mod1 = rf(**rfParams)
mod2 = Pipeline([('scaler', StandardScaler()), ('clf', knn(**knnParams))])
mod3 = Pipeline([('scaler', StandardScaler()), ('clf', SVC(**SVCParams))])
mod4 = Pipeline([('scaler', StandardScaler()), ('clf', lr(**lrParams))])
mod5 = lgb.LGBMClassifier(**lgbParams)
mod6 = xgb.XGBClassifier(**xgbParams)
mods = [mod1, mod2, mod3, mod4, mod5, mod6]
mod = ensemble(X, y, mods, n)
return mod
Ich möchte jeden Parameter außer X, y und n zu einer optionalen Eingabe machen (d. h. der Benutzer kann buildModel(X, y, n) aufrufen). Ich möchte auch, dass die Funktion ableitet, für welches Modell der Parameter bestimmt ist, ohne dass er explizit/fest codiert ist. Ich verstehe, dass Sie *args oder **kwargs verwenden können, aber ich bin etwas unbekannt und möchte eine umfangreiche if elif-Anweisung vermeiden, weshalb ich bei Wörterbüchern zögere und diese robust machen möchte.
Ich arbeite derzeit noch nicht an der Skalierbarkeit, daher an den in der Funktion definierten Modellen. Die Idee dabei ist jedoch, Parameter übergeben zu können, wenn Sie Parameter haben, d. h. Sie haben irgendwo ein Skript ausgeführt und es gibt eine Reihe von Parametern aus, die Sie dann problemlos an diese Funktion übergeben können, wo sie sich mit der Modellerstellung befasst. Aber ich möchte nicht, dass es sich um eine riesige Sammlung von if-Anweisungen handelt, und ich möchte so wenig Code wie möglich haben, ohne die Funktionalität zu externalisieren, damit es weniger Aufwand gibt, den Code zu ändern oder zu aktualisieren.
Ist das erreichbar und was ist die beste Lösung?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post