J'essaie d'utiliser scipy minimiser et de courir dans une erreur ValueError que je n'arrive pas à comprendre.python scipy minimiser ValueError
J'ai une fonction objectif f telle que définie ci-dessous, qui prend deux entrées. Si je définis les deux entrées avec des nombres aléatoires, et appelez la fonction, il semble évaluer très bien.
import numpy as np
import pandas as pd
from scipy.optimize import minimize
sigma = pd.DataFrame(np.random.randn(7, 7), columns=list('ABCDEFG'))
x0 = np.random.randn(7)
def f(x, sigma):
result = 0.0
sigmaX = sigma.dot(x)
for i in range(len(x)):
for j in range(len(x)):
result = result + (x[i] * sigmaX[i] - x[j]*sigmaX[j])**2
return result
In [387]: f(x0, sigma)
Out[387]: 371.67951578983951
Mais quand j'essaie d'utiliser minimiser, je reçois un ValueError:
In [389]: minimize(f, x0, args=(sigma))
ValueError: Wrong number of items passed 1, placement implies 7
je ne peux pas savoir si minimiser est bouleversé la forme/taille de x0 ou sigma. Toute aide sera la bienvenue!
Eric
Essayez 'args = (sigma,)'. C'est à dire assurez-vous de donner un argument à 'args'. Sans le ',' le '()' ne fait rien. – hpaulj
Je t'embrasserais si je le pouvais. Je vous remercie!! –