[Numpy-discussion] Calculation of a hessian
Kiko
kikocorreoso at gmail.com
Mon Aug 11 02:02:48 EDT 2014
2014-08-08 11:51 GMT+02:00 Jose Gomez-Dans <jgomezdans at gmail.com>:
> Your function looks fairly simple to differentiate by hand, but if you
> have access to the gradient (or you estimate it numerically using
> scipy...), this function might do the job:
>
> def hessian ( x, the_func, epsilon=1e-8):
> """Numerical approximation to the Hessian
> Parameters
> ------------
> x: array-like
> The evaluation point
> the_func: function
> The function. We assume that the function returns the function
> value and
> the associated gradient as the second return element
> epsilon: float
> The size of the step
> """
>
> N = x.size
> h = np.zeros((N,N))
> df_0 = the_func ( x )[1]
> for i in xrange(N):
> xx0 = 1.*x[i]
> x[i] = xx0 + epsilon
> df_1 = the_func ( x )[1]
> h[i,:] = (df_1 - df_0)/epsilon
> x[i] = xx0
> return h
>
> Jose
>
>
Hi José,
Thanks for the answer.
My idea would be to generalise the calculation of the Hessian, not just to
differentiate the example I posted and I was wondering if Numpy/Scipy
already had something similar to that provided by NumDiffTools.
Thanks again.
>
> On 8 August 2014 08:31, Kiko <kikocorreoso at gmail.com> wrote:
>
>> Hi all,
>>
>> I am trying to calculate a Hessian. I am using numdifftools for this (
>> https://pypi.python.org/pypi/Numdifftools).
>>
>> My question is, is it possible to make it using pure numpy?.
>>
>> The actual code is like this:
>>
>>
>> *import numdifftools as nd*
>> *import numpy as np*
>>
>> *def log_likelihood(params):*
>> * sum1 = 0; sum2 = 0*
>> * mu = params[0]; sigma = params[1]; xi = params[2]*
>> * for z in data:*
>> * x = 1 + xi * ((z-mu)/sigma)*
>> * sum1 += np.log(x)*
>> * sum2 += x**(-1.0/xi)*
>> * return -((-len(data) * np.log(sigma)) - (1 + 1/xi)*sum1 - sum2) #
>> negated so we can use 'minimum'*
>>
>> *kk = nd.Hessian(log_likelihood)*
>>
>> Thanks in advance.
>>
>> _______________________________________________
>> NumPy-Discussion mailing list
>> NumPy-Discussion at scipy.org
>> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>>
>>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20140811/153d5953/attachment.html>
More information about the NumPy-Discussion
mailing list