Kernel Density Estimation with scipy

Kernel Density Estimation with scipy

This post continues the last one where we have seen how to how to fit two types of distribution functions (Normal and Rayleigh). This time we will see how to use Kernel Density Estimation (KDE) to estimate the probability density function. KDE is a nonparametric technique for density estimation in which a known density function (the kernel) is averaged across the observed data points to create a smooth approximation. Also, KDE is a non-parametric density estimators, this means that the estimator has not a fixed functional form but only it depends upon all the data points we used to reach an estimate and the result of the procedure has no meaningful associated parameters. Let's see the snippet:
from scipy.stats.kde import gaussian_kde
from scipy.stats import norm
from numpy import linspace,hstack
from pylab import plot,show,hist

# creating data with two peaks
sampD1 = norm.rvs(loc=-1.0,scale=1,size=300)
sampD2 = norm.rvs(loc=2.0,scale=0.5,size=300)
samp = hstack([sampD1,sampD2])

# obtaining the pdf (my_pdf is a function!)
my_pdf = gaussian_kde(samp)

# plotting the result
x = linspace(-5,5,100)
plot(x,my_pdf(x),'r') # distribution function
hist(samp,normed=1,alpha=.3) # histogram
show()
The result should be as follows:


http://jakevdp.github.io/blog/2013/12/01/kernel-density-estimation/

ImportError: libatlas.so.3: cannot open shared object file: No such file or directory

After installing Scipy, when I import optimize from Scipy, the following error occurs. 

Traceback (most recent call last):
  File "", line 1, in
  File "/home/allank/SmashCell/local/lib/python2.7/site-packages/numpy/__init__.py", line 130, in
    import add_newdocs
  File "/home/allank/SmashCell/local/lib/python2.7/site-packages/numpy/add_newdocs.py", line 9, in
    from lib import add_newdoc
  File "/home/allank/SmashCell/local/lib/python2.7/site-packages/numpy/lib/__init__.py", line 13, in
    from polynomial import *
  File "/home/allank/SmashCell/local/lib/python2.7/site-packages/numpy/lib/polynomial.py", line 18, in
    from numpy.linalg import eigvals, lstsq
  File "/home/allank/SmashCell/local/lib/python2.7/site-packages/numpy/linalg/__init__.py", line 47, in
    from linalg import *
  File "/home/allank/SmashCell/local/lib/python2.7/site-packages/numpy/linalg/linalg.py", line 22, in
    from numpy.linalg import lapack_lite
ImportError: libatlas.so.3: cannot open shared object file: No such file or directory


Solution of this problem: 

add the paths to LD_LIBRARY_PATH as advised (see below), then "python setup.py clean;python setup.py build;python setup.py install;"  but the same error persists.

export LAPACK=/usr/lib/lapack/liblapack.so;export ATLAS=/usr/lib/atlas-base/libatlas.so;
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/lapack:/usr/lib/atlas-base;

Popular Posts