Seite 1 von 1

Wert des Attributes in einer For schleife ändern

Verfasst: Mittwoch 12. Oktober 2022, 21:13
von nichtSoGuter
Ich möchte den Wert einer Instanz in Abhängigkeit der Iterationsvariable ändern. Ich weiß aber leider nicht wie ich das hinbekommen soll
Ich habe folgendes getestet, was aber nicht funktioniert hat.

Das Attribut C soll die Werte der Iteratorvariable "i" annehmen.
Wenn ich die returnte "modellist" printe dann habe ich bei allen Modellen für das Attribut C den Wert 9

Code: Alles auswählen

model = LogisticRegression(C = 0)

def tests(model,hyperparametername_als_string ,suchbereich= np.arange(1,10)):
  modellist = []

  for i in suchbereich :
    setattr(model,hyperparametername_als_string, i)
    modellist.append(model)

  return modellist

tests(model, "C")

Re: Wert des Attributes in einer For schleife ändern

Verfasst: Mittwoch 12. Oktober 2022, 21:37
von /me
Du fügst mit `modellist.append(model)` ja auch nur ein einziges Model mehrmals zur Liste hinzu. Die Liste hat nachher mehrere Einträge, aber alle davon sind das gleiche Objekt.

Re: Wert des Attributes in einer For schleife ändern

Verfasst: Mittwoch 12. Oktober 2022, 21:47
von Sirius3
Eingerückt wird immer mit 4 Leerzeichen pro Ebene, nicht 2. Deine Leerzeichensetzung ist sehr unregelmäßig und hält sich nicht an die Konventionen.
Magische Dinge wie setattr sollte man sehr sparsam einsetzen, vor allem weil hier die Verallgemeinerung eine triviale Schleife sehr kompliziert macht.
Du mußt für jeden C-Parameter ein neues Model erzeugen:

Code: Alles auswählen

models = [LogisticRegression(C=i) for i in range(1, 10)]