[SciPy-Dev] Warnings raised (from fit in scipy.stats)
Skipper Seabold
jsseabold@gmail....
Fri Jun 11 12:34:35 CDT 2010
On Fri, Jun 11, 2010 at 1:07 PM, <josef.pktd@gmail.com> wrote:
> On Fri, Jun 11, 2010 at 12:45 PM, Skipper Seabold <jsseabold@gmail.com> wrote:
>> Since the raising of warning behavior has been changed (I believe), I
>> have been running into a lot of warnings in my code when say I do
>> something like
>>
>> In [120]: from scipy import stats
>>
>> In [121]: y = [-45, -3, 1, 0, 1, 3]
>>
>> In [122]: v = stats.norm.pdf(y)/stats.norm.cdf(y)
>> Warning: invalid value encountered in divide
>>
>> Sometimes, this is useful to know. Sometimes, though, it's very
>> disturbing when it's encountered in some kind of iteration or
>> optimization. I have been using numpy.clip to get around this in my
>> own code, but when it's buried a bit deeper, it's not quite so simple.
>>
>> Take this example.
>>
>> In [123]: import numpy as np
>>
>> In [124]: np.random.seed(12345)
>>
>> In [125]: B = 6.0
>>
>> In [126]: x = np.random.exponential(scale=B, size=5000)
>>
>> In [127]: from scipy.stats import expon
>>
>> In [128]: expon.fit(x)
>>
>> <dozens of warnings clipped>
>>
>> Out[128]: (0.21874043533906118, 5.7122829778172939)
>>
>> The fit is achieved by fmin (as far as I know, since disp=0 in the
>> rv_continuous.fit...), but there are a number of warnings emitted. Is
>> there any middle ground to be had in these type of situations via
>> context management perhaps?
>>
>> Should I file a ticket?
>
> Which numpy scipy versions are you using?
>
Numpy
'2.0.0.dev8417'
Scipy
'0.9.0.dev6447'
> I don't get any warning with the first example. (numpy 1.4.0)
> (I cannot run the second example because I have a scipy revision with
> a broken fit() method)
>
> I don't think wrapping functions/methods to turn off warnings is a
> good option. (many of them are in inner loops for example for random
> number generation)
>
Granted I haven't looked too much into the details of the warnings
context manager other than using some toy examples once or twice, but
if you could just suppress them for when the solver is called within a
function/method then this would do the trick (at least for the ones I
have been running into, mostly to do with fitting like this or with
maximum likelihood).
Skipper
More information about the SciPy-Dev
mailing list