TypeError: fmin_() missing 1 required positional argument: 'pp'

Résolu/Fermé
Meve - Modifié le 19 juil. 2021 à 20:44
 Meve - 20 juil. 2021 à 20:16
Bonjour,

[Débutante]

J'essaie d'approximer la valeur d'une liste de moyennes centrées sur la première valeur d'une liste de probabilités.

Exemple : probabilités = [0.90, 0.019, 0.077, 1.0902e-04]
moyennes hypothétiques= [0.000, -2.747, -1.985, -4.679]

Pour cela, je souhaite utiliser la fonction scipy.optimize.fmin

Seulement, mon code renvoie un message d'erreur à la ligne d'appel de la fonction (avant dernière ligne du morceau de code copié ici). Le message est: TypeError: minimize() missing 1 required positional argument: 'pp'

initguess_oblique = [0.000, -2.747, -1.985, -4.679]
initguess_centrect= [0.000, -2.820, -2.822, -6.586]
initguess_rhombic= [0.000, 0.000, -1.185, -9.313]
initguess_hexa= [0.000, 0.000,  0.000, -7.996]

#Fit the mus from the probabilities (depending on the alpha value of each participant).
def mu2pr(mu_list):
  '''Gives the probabilities estimated from the found mu'''
  my_mu_lst= [0.0]+ mu_list
  mu_nb=len(my_mu_lst)
  prob_lst= np.zeros((1,4))
  max_inds=[]
 
  for i in range(simul_nb):
    simul_mat= np.array(my_mu_lst)+np.random.randn(mu_nb)
    max_inds.append(np.argmax(simul_mat))
  
  for probindex in range(mu_nb-1):
    prob_lst[0,probindex]= max_inds.count(probindex)/ simul_nb

  return prob_lst

def minimize(real_prob,pp):
    ''' We try to get the minimize the difference between the computed 
    probabilities and the probabilities we get from the estimated mus (mu2pr)'''
    mu2pr(pp)
    errfunc= sum(((real_prob - mu2pr(pp)) **2))
    return errfunc

mus_all_participants= np.zeros((len(alpha_all_participants),nstim,number_orientations))

for index in range(len(probs_all_participants)):
    
     prob_oblique= probs_all_participants[index,0]
     prob_centrect= probs_all_participants[index,1]
     prob_rhombic= probs_all_participants[index,2]
     prob_hexa= probs_all_participants[index,3]

     p1ob= fmin(minimize,initguess_oblique,args=prob_oblique)
     oblique_mus= [0.0]+ p1ob


Je crois que cela vient du fait que la fonction fmin ne comprend pas que l'entrée 'pp' de minimize() est ce qu'elle devait générer et minimiser elle-même. fmin s'attend donc à ce que je passe deux arguments pour minimize(). J'aimerais comprendre pourquoi cela se produit et comment régler cela.


EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

3 réponses

yg_be Messages postés 20773 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 décembre 2022 1 269
19 juil. 2021 à 21:07
bonjour,
ton code me donne une erreur en ligne 30:
name 'np' is not defined

ne manque-t-il rien?
0