Scipy expit: Unerwartetes Verhalten. NaNs

8

Bemerkenswert einige nan wurden unerwartet in meinen Daten angezeigt. (und ausdehnen und naning alles, was sie berührten) Habe einige sorgfältige Untersuchungen durchgeführt und ein minimales Arbeitsbeispiel erstellt:

%Vor%

Expit ist das inverse Logit. Scipy-Dokumentation hier . Was sagt uns: expit(x) = 1/(1+exp(-x))

Also 1+exp(-709)==1.0 , also expit(709)=1.0 Scheint ziemlich vernünftig, rundend exp(-709)==0 .
Was passiert mit expit(710) ?
expit(710)==nan impliziert 1+exp(-710)==0 , was bedeutet: exp(-710)=-1 , was überhaupt nicht stimmt.

Was ist los?

Ich repariere es mit:

%Vor%

Aber das wird ein bisschen langsamer, weil extra op und der Python-Overhead.

Ich verwende numpy 1.8.-0 und scipy 0.13.2

    
Lyndon White 25.02.2014, 06:46
quelle

1 Antwort

3
  

Was ist los?

Die Funktion ist offensichtlich nicht so programmiert, um mit solch großen Eingängen fertig zu werden, und bei den internen Berechnungen tritt ein Überlauf auf.

Die Bedeutung der Zahl 710 ist, dass math.exp(709) als float dargestellt werden kann, während math.exp(710) nicht:

%Vor%

Könnte es sein, einen Fehler gegen SciPy einzureichen .

    
NPE 25.02.2014, 07:30
quelle

Tags und Links