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 : Sélectionner tout - Visualiser dans une fenêtre à part
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