Bonjour à tous,
je suis un novice dans la programmation python et j'aurai aimé savoir comment je pourrais faire pour optimiser le code suivant :
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.
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
Toutes idées pour optimiser le temps de calcul serait bienvenue.
Merci
Edit : je bosse avec python 2.4.2
Partager