Seite 1 von 1

List

Verfasst: Dienstag 13. September 2022, 09:01
von alpi
Wie kann ich verhindern das meine Liste Überschrieben wird?
Hallo liebes Community,

ich möchte, in eine Liste Werte hinzufügen, um anschließend mir den durchschnitt auszugeben. Allerdings werden meine Werte immer überschrieben.

averageGamma = [ ]

averageC = [ ]

valuess= {'gamma' : 5, 'C' : 6, 'C' : 7, 'gamma':10}

for key, value in valuess.items():

if key == 'gamma':

averageGamma.append(value)

else:

averageC.append(value)

print(np.mean(averageGamma))

print(np.mean(averageC))

Ausgabe: 10

Ausgabe: 7

danke schonmal

Re: List

Verfasst: Dienstag 13. September 2022, 09:07
von Sirius3
Nicht Deine Listen machen hier Probleme, sondern das Wörterbuch, denn in einem Wörterbuch kann jeder Schlüssel nur einmal vorkommen.
Woher kommen diese `valuess`?

Re: List

Verfasst: Dienstag 13. September 2022, 09:14
von alpi
Ich versuche fuer folgende Parameter: SVC(kernel = 'rbf', C = 1, gamma= 1) den bestmöglichen Durchschnittswert zu ermitteln:

averageGamma = []
averageKey = []
for i in range (0 , 100):

clf = GridSearchCV( SVC(), param_grid={
'gamma' : [1, 2, 3, 4, 5],
'C' : [1, 2, 3, 4, 5]

}, cv = RepeatedKFold())

clf.fit(sc.transform(x_train), y_train)

for key, values in clf.param_grid.items():
if key == 'gamma':
averageGamma.append(values)
else:
averageKey.append(values)
print(np.mean(averageGamma))
print(np.mean(averageKey ))

So sieht der Code ursprünglich aus.

Re: List

Verfasst: Dienstag 13. September 2022, 09:52
von __blackjack__
@alpi: Was meinst Du mit „überschrieben“? Das einzige was sich in der Schleife ändert ist `i`, und das wird nirgends verwendet. Falls da nicht irgendwo Zufallswerte rein spielen oder die `fit()`-Methode das `param_grid` verändern, kommt da in jedem Schleifendurchlauf das gleiche bei heraus.

Laut Doku ist `param_grid` nicht einmal ein offizielles Attribut. Bist Du sicher, dass Du *darüber* iterieren möchtest, und nicht beispielsweise über das beste Ergebnis?