[SciPy-Dev] Warnings raised (from fit in scipy.stats)

Vincent Davis vincent@vincentdavis....
Fri Jun 11 13:17:00 CDT 2010


On Fri, Jun 11, 2010 at 11:34 AM, Skipper Seabold <jsseabold@gmail.com> wrote:
> 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?

I get know warnings
>>> import numpy as np
>>> np.random.seed(12345)
>>> B = 6.0
>>> x = np.random.exponential(scale=B, size=5000)
>>> from scipy.stats import expon
>>> expon.fit(x)
array([  6.43573559e-04,   5.93058867e+00])

>>> from scipy import stats
>>> y = [-45, -3, 1, 0, 1, 3]
>>> v  = stats.norm.pdf(y)/stats.norm.cdf(y)

numpy 1.4.0
scipy 0.8.0b1

Vincent

> 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
> _______________________________________________
> SciPy-Dev mailing list
> SciPy-Dev@scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-dev
>


More information about the SciPy-Dev mailing list