Comment optimiser ce code ?
Bonjour à tous,
je suis un novice dans la programmation python et j'aurai aimé savoir comment je pourrais faire pour optimiser le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| import psyco
psyco.full()
obs = [0, 0, 1, 1, 0, 1]
pred = [0.9874562164, 0.23565464, 0.756586787, 0.894542311, 0.1212121, 0.9953121234]
def sum_sens_spec(obs, pred):
vp = 0
vn = 0
fp = 0
fn = 0
b = xrange(len(obs))
for j in b:
if obs[j]:
if pred[j]:
vp +=1
else:
fn +=1
else:
if pred[j]:
fp +=1
else:
vn +=1
sens = vp/(vp+fn)
spec = vn/(vn+fp)
res1 = sens+spec
return res1
cuts = [u/n for u in xrange(n+1)]
res = []
for u in cuts:
pred2 = [i>=u for i in pred]
res.append(sum_sens_spec(obs, pred2))
m1 = max(res)
u = 0
while res[u] < m1:
u +=1 |
L'objectif de ce code est de trouver la valeur comprise entre 0 et 1 qui permet de maximiser la somme de spec et sens. Ici obs et pred prennent que 6 valeurs mais dans la réalité ils en prennent plus de 1200 en moyenne.
Toutes idées pour optimiser le temps de calcul serait bienvenue.
Merci
Edit : je bosse avec python 2.4.2