J'ai un tableau numx 3x2000 dans x_data et un tableau numpy 1x2000 dans y_data que je passe à cette fonction pour me donner une ligne de régression. ça fonctionne bien. Le problème est que j'essaie de faire quelques backtesting et de tester 1000 situations, je dois régresser 1000 fois et il me faudra environ 5 minutes pour cela.Python fmin trop lent
J'ai essayé d'uniformiser les variables, cela ne semblait pas le rendre plus rapide.
J'ai aussi brièvement essayé fmin_powell et fmin_bfgs qui semblaient le casser.
des idées? Merci!
def regress(x_data, y_data, fg_spread, fg_line):
theta = np.matrix(np.ones((1,x_data.shape[0]))*.11)
hyp = lambda theta, x: 1/(1 + np.exp(-(theta*x)))
cost_hyp = lambda theta, x, y: ((np.multiply(-y,np.log10(hyp(theta,x)))) - \
(np.multiply((1-y),(np.log10(1-hyp(theta, x)))))).sum()
theta = scipy.optimize.fmin(cost_hyp, theta, args=(x_data,y_data), xtol=.00001, disp=0)
return hyp(np.matrix(theta),np.matrix([1,fg_spread, fg_line]).reshape(3,1))
faites attention lorsque vous ajoutez et enregistrez min à ce moment-là? –
Cinq minutes ne doivent pas être longues; c'est vraiment relatif (et juste le temps qu'il faut pour prendre une tasse de café). En outre, vous définissez xtol un facteur 10 inférieur; Cela peut ralentir les choses. Et que signifie «briser» dans ce contexte? Depuis je suppose que ceux-ci peuvent être légèrement plus rapides. – Evert
Joran, pourriez-vous m'expliquer ce que vous voulez dire? grâce – appleLover