J'ai donc un défi à relever que j'essaie de relever. J'ai un code matlab qui fonctionne très bien, je veux écrire le même code en python. Mais je n'obtiens pas les mêmes résultats.

J'ai essayé d'utiliser une boucle for différente de celle de matlab. Bien que ceux-ci devraient donner les mêmes résultats, je suis en échec à un moment donné de la boucle, même si je ne pouvais pas comprendre où était l'erreur.

for ii = 1:100 #matlab code
healthy=2*randn(100,1000)+5;
patient=2*randn(100,1000)+7;
threshold=mu_healthy-sd_healthy:0.1:mu_patient+sd_patient;
for i=1:length(threshold)
TP(i)=sum(patient>=threshold(i));
FP(i)=sum(healthy>=threshold(i));
TN(i)=sum(healthy<threshold(i));
FN(i)=sum(patient<threshold(i));
end
FPR(ii,:)=FP/1000;
TPR(ii,:)=TP/1000;

def appending(): #python code 
    for n in range(0,50):
        for x in range(0,1000):
            for a in range(0,61):
                if Apatient[x,n]>=newthreshold[a]:
                    TP[a].append(Apatient[x,n])
                elif Ahealthy[x,n]>=newthreshold[a]:
                    FP.append(Ahealthy[x,n])
                elif Apatient[x,n]<newthreshold[a]:
                    TN.append(Apatient[x,n])
                elif Ahealthy[x,n]<newthreshold[a]:
                    FN.append(Ahealthy[x,n])

Si vous pouvez l'exécuter dans matlab, vous verrez des valeurs FN, TN avec 61 valeurs dans chaque colonne. Je veux que la même chose se produise également dans ma boucle, mais je reçois beaucoup d'éléments si j'exécute ce code. Merci

0
Kutay Kılıç 3 nov. 2019 à 19:22