Benchmarks for covariance

GraphLasso-minimadelon

Benchmark setup

from sklearn.covariance import GraphLasso
from deps import load_data

kwargs = {}
X, y, X_t, y_t = load_data('minimadelon')
obj = GraphLasso(**kwargs)

Benchmark statement

obj.fit(X)

Execution time

_images/GraphLasso-minimadelon-step0-timing.png

Memory usage

_images/GraphLasso-minimadelon-step0-memory.png

Additional output

Traceback

   Traceback (most recent call last):
  File "/home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py", line 150, in run
    exec step in ns
  File "<string>", line 1, in <module>
  File "/tmp/vb_sklearn/sklearn/covariance/graph_lasso_.py", line 264, in fit
    verbose=self.verbose,
  File "/tmp/vb_sklearn/sklearn/covariance/graph_lasso_.py", line 207, in graph_lasso
    raise e
FloatingPointError: Non SPD result: the system is too ill-conditioned for this solver. The system is too ill-conditioned for this solver
Traceback (most recent call last):
  File "/home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py", line 260, in run
    mem_usages = magic_memit(ns, self.code, repeat=self.mem_repeat)
  File "/home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py", line 672, in magic_memit
    raise RuntimeError('ERROR: all subprocesses exited unsuccessfully.'
RuntimeError: ERROR: all subprocesses exited unsuccessfully. Try again with the `-i` option.
Traceback (most recent call last):
  File "/home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py", line 293, in run
    prof.runcall(f)
  File "/sp/lib/python/cpython-2.7.2/lib/python2.7/cProfile.py", line 149, in runcall
    return func(*args, **kw)
  File "/home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py", line 288, in f
    exec code in ns
  File "<f>", line 1, in <module>
  File "/tmp/vb_sklearn/sklearn/covariance/graph_lasso_.py", line 264, in fit
    verbose=self.verbose,
  File "/tmp/vb_sklearn/sklearn/covariance/graph_lasso_.py", line 207, in graph_lasso
    raise e
FloatingPointError: Non SPD result: the system is too ill-conditioned for this solver. The system is too ill-conditioned for this solver
Traceback (most recent call last):
  File "/home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py", line 351, in run
    prof.runcall(f)
  File "/home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/line_profiler.py", line 137, in runcall
    return func(*args, **kw)
  File "/home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py", line 348, in f
    exec code in ns
  File "<f>", line 1, in <module>
  File "/tmp/vb_sklearn/sklearn/covariance/graph_lasso_.py", line 264, in fit
    verbose=self.verbose,
  File "/tmp/vb_sklearn/sklearn/covariance/graph_lasso_.py", line 207, in graph_lasso
    raise e
FloatingPointError: Non SPD result: the system is too ill-conditioned for this solver. The system is too ill-conditioned for this solver

GraphLasso-madelon

Benchmark setup

from sklearn.covariance import GraphLasso
from deps import load_data

kwargs = {}
X, y, X_t, y_t = load_data('madelon')
obj = GraphLasso(**kwargs)

Benchmark statement

obj.fit(X)

Execution time

_images/GraphLasso-madelon-step0-timing.png

Memory usage

_images/GraphLasso-madelon-step0-memory.png

Additional output

Traceback

   Traceback (most recent call last):
  File "/home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py", line 150, in run
    exec step in ns
  File "<string>", line 1, in <module>
  File "/tmp/vb_sklearn/sklearn/covariance/graph_lasso_.py", line 264, in fit
    verbose=self.verbose,
  File "/tmp/vb_sklearn/sklearn/covariance/graph_lasso_.py", line 207, in graph_lasso
    raise e
FloatingPointError: overflow encountered in multiply. The system is too ill-conditioned for this solver
Traceback (most recent call last):
  File "/home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py", line 260, in run
    mem_usages = magic_memit(ns, self.code, repeat=self.mem_repeat)
  File "/home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py", line 672, in magic_memit
    raise RuntimeError('ERROR: all subprocesses exited unsuccessfully.'
RuntimeError: ERROR: all subprocesses exited unsuccessfully. Try again with the `-i` option.
Traceback (most recent call last):
  File "/home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py", line 293, in run
    prof.runcall(f)
  File "/sp/lib/python/cpython-2.7.2/lib/python2.7/cProfile.py", line 149, in runcall
    return func(*args, **kw)
  File "/home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py", line 288, in f
    exec code in ns
  File "<f>", line 1, in <module>
  File "/tmp/vb_sklearn/sklearn/covariance/graph_lasso_.py", line 264, in fit
    verbose=self.verbose,
  File "/tmp/vb_sklearn/sklearn/covariance/graph_lasso_.py", line 207, in graph_lasso
    raise e
FloatingPointError: overflow encountered in multiply. The system is too ill-conditioned for this solver
Traceback (most recent call last):
  File "/home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py", line 351, in run
    prof.runcall(f)
  File "/home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/line_profiler.py", line 137, in runcall
    return func(*args, **kw)
  File "/home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py", line 348, in f
    exec code in ns
  File "<f>", line 1, in <module>
  File "/tmp/vb_sklearn/sklearn/covariance/graph_lasso_.py", line 264, in fit
    verbose=self.verbose,
  File "/tmp/vb_sklearn/sklearn/covariance/graph_lasso_.py", line 207, in graph_lasso
    raise e
FloatingPointError: overflow encountered in multiply. The system is too ill-conditioned for this solver

MinCovDet-blobs

Benchmark setup

from sklearn.covariance import MinCovDet
from deps import load_data

kwargs = {}
X, y, X_t, y_t = load_data('blobs')
obj = MinCovDet(**kwargs)

Benchmark statement

obj.fit(X)

Execution time

_images/MinCovDet-blobs-step0-timing.png

Memory usage

_images/MinCovDet-blobs-step0-memory.png

Additional output

cProfile

         13580 function calls in 1.305 seconds

Ordered by: cumulative time

ncalls  tottime  percall  cumtime  percall filename:lineno(function)
     1    0.000    0.000    1.305    1.305 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py:286(f)
     1    0.000    0.000    1.305    1.305 <f>:1(<module>)
     1    0.000    0.000    1.305    1.305 /tmp/vb_sklearn/sklearn/covariance/robust_covariance.py:515(fit)
     1    0.000    0.000    1.292    1.292 /tmp/vb_sklearn/sklearn/covariance/robust_covariance.py:259(fast_mcd)
     2    0.003    0.001    1.292    0.646 /tmp/vb_sklearn/sklearn/covariance/robust_covariance.py:152(select_candidates)
    40    0.148    0.004    1.266    0.032 /tmp/vb_sklearn/sklearn/covariance/robust_covariance.py:27(c_step)
   126    0.001    0.000    0.850    0.007 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/basic.py:457(pinv)
   126    0.794    0.006    0.832    0.007 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/basic.py:365(lstsq)
   243    0.158    0.001    0.158    0.001 {numpy.core._dotblas.dot}
   116    0.001    0.000    0.097    0.001 /tmp/vb_sklearn/sklearn/covariance/empirical_covariance_.py:37(empirical_covariance)
   116    0.016    0.000    0.094    0.001 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/lib/function_base.py:1888(cov)
   145    0.001    0.000    0.051    0.000 /tmp/vb_sklearn/sklearn/utils/extmath.py:39(_fast_logdet_numpy)
   145    0.013    0.000    0.050    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/linalg/linalg.py:1560(slogdet)
   379    0.030    0.000    0.040    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/lib/function_base.py:526(asarray_chkfinite)
   952    0.002    0.000    0.032    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:167(asarray)
  1159    0.032    0.000    0.032    0.000 {numpy.core.multiarray.array}
   132    0.001    0.000    0.027    0.000 {map}
   233    0.024    0.000    0.024    0.000 {method 'mean' of 'numpy.ndarray' objects}
   145    0.021    0.000    0.021    0.000 {numpy.linalg.lapack_lite.dgetrf}
   918    0.010    0.000    0.010    0.000 {method 'any' of 'numpy.ndarray' objects}
     1    0.001    0.001    0.010    0.010 /tmp/vb_sklearn/sklearn/covariance/robust_covariance.py:583(reweight_covariance)
   127    0.008    0.000    0.008    0.000 {method 'sum' of 'numpy.ndarray' objects}
   127    0.002    0.000    0.007    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:60(get_lapack_funcs)
     1    0.000    0.000    0.006    0.006 /tmp/vb_sklearn/sklearn/covariance/empirical_covariance_.py:98(_set_covariance)
    40    0.002    0.000    0.005    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:1862(allclose)
    30    0.004    0.000    0.004    0.000 {method 'permutation' of 'mtrand.RandomState' objects}
    87    0.000    0.000    0.004    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:598(argsort)
   127    0.002    0.000    0.004    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:45(find_best_lapack_type)
    87    0.003    0.000    0.003    0.000 {method 'argsort' of 'numpy.ndarray' objects}
   145    0.001    0.000    0.003    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/linalg/linalg.py:139(_fastCopyAndTranspose)
   435    0.003    0.000    0.003    0.000 {method 'reduce' of 'numpy.ufunc' objects}
   145    0.001    0.000    0.003    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:902(diagonal)
   145    0.002    0.000    0.002    0.000 {numpy.core.multiarray._fastCopyAndTranspose}
   387    0.002    0.000    0.002    0.000 {numpy.core.multiarray.zeros}
   126    0.001    0.000    0.002    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:1830(identity)
   145    0.001    0.000    0.002    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/linalg/linalg.py:99(_commonType)
     2    0.000    0.000    0.001    0.001 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/stats/distributions.py:453(isf)
     2    0.000    0.000    0.001    0.001 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/stats/distributions.py:1521(isf)
   145    0.001    0.000    0.001    0.000 {method 'diagonal' of 'numpy.ndarray' objects}
   162    0.000    0.000    0.001    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:1508(any)
     1    0.000    0.000    0.001    0.001 /tmp/vb_sklearn/sklearn/covariance/robust_covariance.py:559(correct_covariance)
   253    0.001    0.000    0.001    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:23(cast_to_lapack_prefix)
   145    0.001    0.000    0.001    0.000 {numpy.core.multiarray.arange}
   941    0.001    0.000    0.001    0.000 {issubclass}
   126    0.001    0.000    0.001    0.000 {method 'astype' of 'numpy.generic' objects}
     1    0.000    0.000    0.001    0.001 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/decomp_svd.py:92(svdvals)
     1    0.001    0.001    0.001    0.001 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/decomp_svd.py:14(svd)
   145    0.001    0.000    0.001    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/linalg/linalg.py:127(_to_native_byte_order)
   145    0.000    0.000    0.001    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/linalg/linalg.py:157(_assertSquareness)
   116    0.001    0.000    0.001    0.000 {method 'astype' of 'numpy.ndarray' objects}
   145    0.001    0.000    0.001    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/linalg/linalg.py:151(_assertRank2)
   260    0.001    0.000    0.001    0.000 {getattr}
   290    0.000    0.000    0.001    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/linalg/linalg.py:71(isComplexType)
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/stats/distributions.py:603(argsreduce)
    80    0.000    0.000    0.000    0.000 {abs}
   574    0.000    0.000    0.000    0.000 {method 'append' of 'list' objects}
    44    0.000    0.000    0.000    0.000 /tmp/vb_sklearn/sklearn/utils/validation.py:181(check_random_state)
   256    0.000    0.000    0.000    0.000 {method 'split' of 'str' objects}
    40    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:1579(all)
   127    0.000    0.000    0.000    0.000 {method 'sort' of 'list' objects}
     6    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:32(_wrapit)
   116    0.000    0.000    0.000    0.000 {method 'squeeze' of 'numpy.ndarray' objects}
   145    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/linalg/linalg.py:84(_realType)
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/stats/distributions.py:592(valarray)
   830    0.000    0.000    0.000    0.000 {len}
    40    0.000    0.000    0.000    0.000 {method 'all' of 'numpy.ndarray' objects}
     8    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/lib/function_base.py:1258(extract)
   127    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:449(isfortran)
   129    0.000    0.000    0.000    0.000 {range}
   145    0.000    0.000    0.000    0.000 {max}
    95    0.000    0.000    0.000    0.000 {isinstance}
   116    0.000    0.000    0.000    0.000 {method 'conj' of 'numpy.ndarray' objects}
   253    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/misc.py:22(_datacopied)
    16    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:1044(ravel)
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:1458(product)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/lib/function_base.py:2861(median)
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/shape_base.py:6(atleast_1d)
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:300(repeat)
   145    0.000    0.000    0.000    0.000 {min}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:1379(sum)
     1    0.000    0.000    0.000    0.000 /tmp/vb_sklearn/sklearn/utils/validation.py:62(array2d)
   145    0.000    0.000    0.000    0.000 {method 'get' of 'dict' objects}
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/stats/distributions.py:2543(_isf)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:490(sort)
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/stats/distributions.py:1173(_argcheck)
    11    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:237(asanyarray)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/sparse/base.py:553(isspmatrix)
     6    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/lib/function_base.py:1301(place)
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/stats/distributions.py:1899(__call__)
     1    0.000    0.000    0.000    0.000 {method 'sort' of 'numpy.ndarray' objects}
    10    0.000    0.000    0.000    0.000 {method 'reshape' of 'numpy.ndarray' objects}
     8    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:45(take)
     2    0.000    0.000    0.000    0.000 {zip}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/sparse/sputils.py:116(_isinstance)
     2    0.000    0.000    0.000    0.000 {method 'any' of 'numpy.generic' objects}
     8    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:1129(nonzero)
     6    0.000    0.000    0.000    0.000 {numpy.lib._compiled_base._insert}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:2299(mean)
     2    0.000    0.000    0.000    0.000 {method 'prod' of 'numpy.ndarray' objects}
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/stats/distributions.py:1896(freeze)
    16    0.000    0.000    0.000    0.000 {method 'ravel' of 'numpy.ndarray' objects}
     8    0.000    0.000    0.000    0.000 {method 'take' of 'numpy.ndarray' objects}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/shape_base.py:58(atleast_2d)
     8    0.000    0.000    0.000    0.000 {method 'nonzero' of 'numpy.ndarray' objects}
     2    0.000    0.000    0.000    0.000 {method 'repeat' of 'numpy.ndarray' objects}
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:107(reshape)
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/stats/distributions.py:635(_fix_loc_scale)
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/stats/distributions.py:433(__init__)
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:1211(shape)
     1    0.000    0.000    0.000    0.000 {method 'flatten' of 'numpy.ndarray' objects}
     1    0.000    0.000    0.000    0.000 /tmp/vb_sklearn/sklearn/covariance/empirical_covariance_.py:120(get_precision)
     1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}

LineProfiler

   Timer unit: 1e-06 s

File: /tmp/vb_sklearn/sklearn/covariance/robust_covariance.py
Function: fit at line 515
Total time: 1.34434 s

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
   515                                               def fit(self, X):
   516                                                   """Fits a Minimum Covariance Determinant with the FastMCD algorithm.
   517
   518                                                   Parameters
   519                                                   ----------
   520                                                   X: array-like, shape = [n_samples, n_features]
   521                                                     Training data, where n_samples is the number of samples
   522                                                     and n_features is the number of features.
   523
   524                                                   Returns
   525                                                   -------
   526                                                   self: object
   527                                                     Returns self.
   528
   529                                                   """
   530         1           10     10.0      0.0          self.random_state = check_random_state(self.random_state)
   531         1            4      4.0      0.0          n_samples, n_features = X.shape
   532                                                   # check that the empirical covariance is full rank
   533         1         2010   2010.0      0.1          if (linalg.svdvals(np.dot(X.T, X)) > 1e-8).sum() != n_features:
   534                                                       warnings.warn("The covariance matrix associated to your dataset " \
   535                                                                         "is not full rank")
   536                                                   # compute and store raw estimates
   537         1            3      3.0      0.0          raw_location, raw_covariance, raw_support, raw_dist = fast_mcd(
   538         1            3      3.0      0.0                  X, support_fraction=self.support_fraction,
   539         1            3      3.0      0.0                  cov_computation_method=self._nonrobust_covariance,
   540         1      1331470 1331470.0     99.0                  random_state=self.random_state)
   541         1            5      5.0      0.0          if self.assume_centered:
   542                                                       raw_location = np.zeros(n_features)
   543                                                       raw_covariance = self._nonrobust_covariance(
   544                                                               X[raw_support], assume_centered=True)
   545                                                       raw_dist = np.sum(np.dot(X, linalg.pinv(raw_covariance)) * X, 1)
   546         1            4      4.0      0.0          self.raw_location_ = raw_location
   547         1            8      8.0      0.0          self.raw_covariance_ = raw_covariance
   548         1            2      2.0      0.0          self.raw_support_ = raw_support
   549         1            2      2.0      0.0          self.location_ = raw_location
   550         1            3      3.0      0.0          self.support_ = raw_support
   551         1            5      5.0      0.0          self.dist_ = raw_dist
   552                                                   # obtain consistency at normal models
   553         1         1215   1215.0      0.1          self.correct_covariance(X)
   554                                                   # reweight estimator
   555         1         9593   9593.0      0.7          self.reweight_covariance(X)
   556
   557         1            3      3.0      0.0          return self

ShrunkCovariance-minimadelon

Benchmark setup

from sklearn.covariance import ShrunkCovariance
from deps import load_data

kwargs = {}
X, y, X_t, y_t = load_data('minimadelon')
obj = ShrunkCovariance(**kwargs)

Benchmark statement

obj.fit(X)

Execution time

_images/ShrunkCovariance-minimadelon-step0-timing.png

Memory usage

_images/ShrunkCovariance-minimadelon-step0-memory.png

Additional output

cProfile

         96 function calls in 0.702 seconds

Ordered by: cumulative time

ncalls  tottime  percall  cumtime  percall filename:lineno(function)
     1    0.000    0.000    0.702    0.702 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py:286(f)
     1    0.000    0.000    0.702    0.702 <f>:1(<module>)
     1    0.000    0.000    0.702    0.702 /tmp/vb_sklearn/sklearn/covariance/shrunk_covariance_.py:105(fit)
     1    0.000    0.000    0.694    0.694 /tmp/vb_sklearn/sklearn/covariance/empirical_covariance_.py:98(_set_covariance)
     1    0.000    0.000    0.694    0.694 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/basic.py:457(pinv)
     1    0.680    0.680    0.689    0.689 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/basic.py:365(lstsq)
     3    0.012    0.004    0.013    0.004 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/lib/function_base.py:526(asarray_chkfinite)
     1    0.000    0.000    0.009    0.009 {map}
     1    0.000    0.000    0.007    0.007 /tmp/vb_sklearn/sklearn/covariance/empirical_covariance_.py:37(empirical_covariance)
     1    0.003    0.003    0.007    0.007 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/lib/function_base.py:1888(cov)
     1    0.004    0.004    0.004    0.004 {numpy.core._dotblas.dot}
     6    0.002    0.000    0.002    0.000 {method 'any' of 'numpy.ndarray' objects}
     1    0.000    0.000    0.001    0.001 /tmp/vb_sklearn/sklearn/covariance/shrunk_covariance_.py:27(shrunk_covariance)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:1830(identity)
     2    0.000    0.000    0.000    0.000 {method 'mean' of 'numpy.ndarray' objects}
     1    0.000    0.000    0.000    0.000 {numpy.core.multiarray.zeros}
     2    0.000    0.000    0.000    0.000 /tmp/vb_sklearn/sklearn/utils/validation.py:62(array2d)
    11    0.000    0.000    0.000    0.000 {numpy.core.multiarray.array}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:60(get_lapack_funcs)
     8    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:167(asarray)
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/sparse/base.py:553(isspmatrix)
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/sparse/sputils.py:116(_isinstance)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:986(trace)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:45(find_best_lapack_type)
     1    0.000    0.000    0.000    0.000 {method 'trace' of 'numpy.ndarray' objects}
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/shape_base.py:58(atleast_2d)
     6    0.000    0.000    0.000    0.000 {method 'split' of 'str' objects}
     1    0.000    0.000    0.000    0.000 {method 'astype' of 'numpy.generic' objects}
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:237(asanyarray)
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:23(cast_to_lapack_prefix)
     2    0.000    0.000    0.000    0.000 {getattr}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:449(isfortran)
     2    0.000    0.000    0.000    0.000 {isinstance}
     4    0.000    0.000    0.000    0.000 {issubclass}
     1    0.000    0.000    0.000    0.000 {method 'sort' of 'list' objects}
     1    0.000    0.000    0.000    0.000 {method 'squeeze' of 'numpy.ndarray' objects}
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/misc.py:22(_datacopied)
     9    0.000    0.000    0.000    0.000 {len}
     1    0.000    0.000    0.000    0.000 {range}
     5    0.000    0.000    0.000    0.000 {method 'append' of 'list' objects}
     1    0.000    0.000    0.000    0.000 {method 'conj' of 'numpy.ndarray' objects}
     1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}

LineProfiler

   Timer unit: 1e-06 s

File: /tmp/vb_sklearn/sklearn/covariance/shrunk_covariance_.py
Function: fit at line 105
Total time: 0.814609 s

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
   105                                               def fit(self, X):
   106                                                   """ Fits the shrunk covariance model
   107                                                   according to the given training data and parameters.
   108
   109                                                   Parameters
   110                                                   ----------
   111                                                   X : array-like, shape = [n_samples, n_features]
   112                                                     Training data, where n_samples is the number of samples
   113                                                     and n_features is the number of features.
   114
   115                                                   assume_centered: Boolean
   116                                                     If True, data are not centered before computation.
   117                                                     Useful to work with data whose mean is significantly equal to
   118                                                     zero but is not exactly zero.
   119                                                     If False, data are centered before computation.
   120
   121                                                   Returns
   122                                                   -------
   123                                                   self : object
   124                                                       Returns self.
   125
   126                                                   """
   127                                                   # Not calling the parent object to fit, to avoid a potential
   128                                                   # matrix inversion when setting the precision
   129         1            2      2.0      0.0          if self.assume_centered:
   130                                                       self.location_ = np.zeros(X.shape[1])
   131                                                   else:
   132         1           97     97.0      0.0              self.location_ = X.mean(0)
   133         1            1      1.0      0.0          covariance = empirical_covariance(X,
   134         1         6219   6219.0      0.8                          assume_centered=self.assume_centered)
   135         1          573    573.0      0.1          covariance = shrunk_covariance(covariance, self.shrinkage)
   136         1       807713 807713.0     99.2          self._set_covariance(covariance)
   137
   138         1            4      4.0      0.0          return self

ShrunkCovariance-madelon

Benchmark setup

from sklearn.covariance import ShrunkCovariance
from deps import load_data

kwargs = {}
X, y, X_t, y_t = load_data('madelon')
obj = ShrunkCovariance(**kwargs)

Benchmark statement

obj.fit(X)

Execution time

_images/ShrunkCovariance-madelon-step0-timing.png

Memory usage

_images/ShrunkCovariance-madelon-step0-memory.png

Additional output

cProfile

         96 function calls in 3.266 seconds

Ordered by: cumulative time

ncalls  tottime  percall  cumtime  percall filename:lineno(function)
     1    0.000    0.000    3.266    3.266 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py:286(f)
     1    0.000    0.000    3.266    3.266 <f>:1(<module>)
     1    0.000    0.000    3.266    3.266 /tmp/vb_sklearn/sklearn/covariance/shrunk_covariance_.py:105(fit)
     1    0.000    0.000    2.821    2.821 /tmp/vb_sklearn/sklearn/covariance/empirical_covariance_.py:98(_set_covariance)
     1    0.000    0.000    2.821    2.821 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/basic.py:457(pinv)
     1    2.796    2.796    2.812    2.812 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/basic.py:365(lstsq)
     1    0.000    0.000    0.413    0.413 /tmp/vb_sklearn/sklearn/covariance/empirical_covariance_.py:37(empirical_covariance)
     1    0.009    0.009    0.413    0.413 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/lib/function_base.py:1888(cov)
     1    0.369    0.369    0.369    0.369 {numpy.core._dotblas.dot}
     2    0.061    0.030    0.061    0.030 {method 'mean' of 'numpy.ndarray' objects}
     3    0.021    0.007    0.024    0.008 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/lib/function_base.py:526(asarray_chkfinite)
     1    0.000    0.000    0.016    0.016 {map}
    11    0.005    0.000    0.005    0.000 {numpy.core.multiarray.array}
     6    0.003    0.000    0.003    0.000 {method 'any' of 'numpy.ndarray' objects}
     1    0.001    0.001    0.001    0.001 /tmp/vb_sklearn/sklearn/covariance/shrunk_covariance_.py:27(shrunk_covariance)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:1830(identity)
     1    0.000    0.000    0.000    0.000 {numpy.core.multiarray.zeros}
     2    0.000    0.000    0.000    0.000 /tmp/vb_sklearn/sklearn/utils/validation.py:62(array2d)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:60(get_lapack_funcs)
     8    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:167(asarray)
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/sparse/base.py:553(isspmatrix)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:45(find_best_lapack_type)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:986(trace)
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/sparse/sputils.py:116(_isinstance)
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/shape_base.py:58(atleast_2d)
     1    0.000    0.000    0.000    0.000 {method 'trace' of 'numpy.ndarray' objects}
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:237(asanyarray)
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:23(cast_to_lapack_prefix)
     1    0.000    0.000    0.000    0.000 {method 'astype' of 'numpy.generic' objects}
     6    0.000    0.000    0.000    0.000 {method 'split' of 'str' objects}
     2    0.000    0.000    0.000    0.000 {getattr}
     2    0.000    0.000    0.000    0.000 {isinstance}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:449(isfortran)
     4    0.000    0.000    0.000    0.000 {issubclass}
     1    0.000    0.000    0.000    0.000 {method 'squeeze' of 'numpy.ndarray' objects}
     5    0.000    0.000    0.000    0.000 {method 'append' of 'list' objects}
     1    0.000    0.000    0.000    0.000 {method 'sort' of 'list' objects}
     9    0.000    0.000    0.000    0.000 {len}
     1    0.000    0.000    0.000    0.000 {range}
     1    0.000    0.000    0.000    0.000 {method 'conj' of 'numpy.ndarray' objects}
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/misc.py:22(_datacopied)
     1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}

LineProfiler

   Timer unit: 1e-06 s

File: /tmp/vb_sklearn/sklearn/covariance/shrunk_covariance_.py
Function: fit at line 105
Total time: 3.39275 s

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
   105                                               def fit(self, X):
   106                                                   """ Fits the shrunk covariance model
   107                                                   according to the given training data and parameters.
   108
   109                                                   Parameters
   110                                                   ----------
   111                                                   X : array-like, shape = [n_samples, n_features]
   112                                                     Training data, where n_samples is the number of samples
   113                                                     and n_features is the number of features.
   114
   115                                                   assume_centered: Boolean
   116                                                     If True, data are not centered before computation.
   117                                                     Useful to work with data whose mean is significantly equal to
   118                                                     zero but is not exactly zero.
   119                                                     If False, data are centered before computation.
   120
   121                                                   Returns
   122                                                   -------
   123                                                   self : object
   124                                                       Returns self.
   125
   126                                                   """
   127                                                   # Not calling the parent object to fit, to avoid a potential
   128                                                   # matrix inversion when setting the precision
   129         1            3      3.0      0.0          if self.assume_centered:
   130                                                       self.location_ = np.zeros(X.shape[1])
   131                                                   else:
   132         1        42452  42452.0      1.3              self.location_ = X.mean(0)
   133         1            4      4.0      0.0          covariance = empirical_covariance(X,
   134         1       502042 502042.0     14.8                          assume_centered=self.assume_centered)
   135         1          950    950.0      0.0          covariance = shrunk_covariance(covariance, self.shrinkage)
   136         1      2847296 2847296.0     83.9          self._set_covariance(covariance)
   137
   138         1            3      3.0      0.0          return self

LedoitWolf-minimadelon

Benchmark setup

from sklearn.covariance import LedoitWolf
from deps import load_data

kwargs = {}
X, y, X_t, y_t = load_data('minimadelon')
obj = LedoitWolf(**kwargs)

Benchmark statement

obj.fit(X)

Execution time

_images/LedoitWolf-minimadelon-step0-timing.png

Memory usage

_images/LedoitWolf-minimadelon-step0-memory.png

Additional output

cProfile

         102 function calls in 0.659 seconds

Ordered by: cumulative time

ncalls  tottime  percall  cumtime  percall filename:lineno(function)
     1    0.000    0.000    0.659    0.659 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py:286(f)
     1    0.000    0.000    0.659    0.659 <f>:1(<module>)
     1    0.000    0.000    0.659    0.659 /tmp/vb_sklearn/sklearn/covariance/shrunk_covariance_.py:365(fit)
     1    0.000    0.000    0.643    0.643 /tmp/vb_sklearn/sklearn/covariance/empirical_covariance_.py:98(_set_covariance)
     1    0.000    0.000    0.643    0.643 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/basic.py:457(pinv)
     1    0.630    0.630    0.638    0.638 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/basic.py:365(lstsq)
     1    0.000    0.000    0.015    0.015 /tmp/vb_sklearn/sklearn/covariance/shrunk_covariance_.py:235(ledoit_wolf)
     3    0.012    0.004    0.013    0.004 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/lib/function_base.py:526(asarray_chkfinite)
     3    0.010    0.003    0.010    0.003 {numpy.core._dotblas.dot}
     1    0.001    0.001    0.009    0.009 /tmp/vb_sklearn/sklearn/covariance/shrunk_covariance_.py:144(ledoit_wolf_shrinkage)
     1    0.000    0.000    0.009    0.009 {map}
     1    0.003    0.003    0.006    0.006 /tmp/vb_sklearn/sklearn/covariance/empirical_covariance_.py:37(empirical_covariance)
     6    0.002    0.000    0.002    0.000 {method 'any' of 'numpy.ndarray' objects}
     5    0.000    0.000    0.001    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:1379(sum)
     5    0.001    0.000    0.001    0.000 {method 'sum' of 'numpy.ndarray' objects}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:1830(identity)
     1    0.000    0.000    0.000    0.000 {numpy.core.multiarray.zeros}
     1    0.000    0.000    0.000    0.000 {method 'mean' of 'numpy.ndarray' objects}
     1    0.000    0.000    0.000    0.000 /tmp/vb_sklearn/sklearn/utils/validation.py:62(array2d)
     9    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:167(asarray)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:60(get_lapack_funcs)
    10    0.000    0.000    0.000    0.000 {numpy.core.multiarray.array}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:986(trace)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:45(find_best_lapack_type)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/sparse/base.py:553(isspmatrix)
     1    0.000    0.000    0.000    0.000 {method 'trace' of 'numpy.ndarray' objects}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/sparse/sputils.py:116(_isinstance)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/shape_base.py:58(atleast_2d)
     6    0.000    0.000    0.000    0.000 {isinstance}
     1    0.000    0.000    0.000    0.000 {method 'astype' of 'numpy.generic' objects}
     1    0.000    0.000    0.000    0.000 {method 'sum' of 'numpy.generic' objects}
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:23(cast_to_lapack_prefix)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:237(asanyarray)
     4    0.000    0.000    0.000    0.000 {method 'split' of 'str' objects}
     2    0.000    0.000    0.000    0.000 {getattr}
     1    0.000    0.000    0.000    0.000 {min}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:449(isfortran)
     8    0.000    0.000    0.000    0.000 {len}
     4    0.000    0.000    0.000    0.000 {method 'append' of 'list' objects}
     4    0.000    0.000    0.000    0.000 {issubclass}
     1    0.000    0.000    0.000    0.000 {method 'sort' of 'list' objects}
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/misc.py:22(_datacopied)
     1    0.000    0.000    0.000    0.000 {range}
     1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}

LineProfiler

   Timer unit: 1e-06 s

File: /tmp/vb_sklearn/sklearn/covariance/shrunk_covariance_.py
Function: fit at line 365
Total time: 0.786937 s

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
   365                                               def fit(self, X):
   366                                                   """ Fits the Ledoit-Wolf shrunk covariance model
   367                                                   according to the given training data and parameters.
   368
   369                                                   Parameters
   370                                                   ----------
   371                                                   X : array-like, shape = [n_samples, n_features]
   372                                                     Training data, where n_samples is the number of samples
   373                                                     and n_features is the number of features.
   374
   375                                                   Returns
   376                                                   -------
   377                                                   self : object
   378                                                       Returns self.
   379
   380                                                   """
   381                                                   # Not calling the parent object to fit, to avoid computing the
   382                                                   # covariance matrix (and potentially the precision)
   383         1            2      2.0      0.0          if self.assume_centered:
   384                                                       self.location_ = np.zeros(X.shape[1])
   385                                                   else:
   386         1           94     94.0      0.0              self.location_ = X.mean(0)
   387         1           53     53.0      0.0          covariance, shrinkage = ledoit_wolf(X - self.location_,
   388         1        14492  14492.0      1.8                          assume_centered=True, block_size=self.block_size)
   389         1            4      4.0      0.0          self.shrinkage_ = shrinkage
   390         1       772289 772289.0     98.1          self._set_covariance(covariance)
   391
   392         1            3      3.0      0.0          return self

LedoitWolf-madelon

Benchmark setup

from sklearn.covariance import LedoitWolf
from deps import load_data

kwargs = {}
X, y, X_t, y_t = load_data('madelon')
obj = LedoitWolf(**kwargs)

Benchmark statement

obj.fit(X)

Execution time

_images/LedoitWolf-madelon-step0-timing.png

Memory usage

_images/LedoitWolf-madelon-step0-memory.png

Additional output

cProfile

         102 function calls in 4.136 seconds

Ordered by: cumulative time

ncalls  tottime  percall  cumtime  percall filename:lineno(function)
     1    0.000    0.000    4.136    4.136 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py:286(f)
     1    0.000    0.000    4.136    4.136 <f>:1(<module>)
     1    0.008    0.008    4.136    4.136 /tmp/vb_sklearn/sklearn/covariance/shrunk_covariance_.py:365(fit)
     1    0.000    0.000    2.826    2.826 /tmp/vb_sklearn/sklearn/covariance/empirical_covariance_.py:98(_set_covariance)
     1    0.000    0.000    2.826    2.826 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/basic.py:457(pinv)
     1    2.802    2.802    2.818    2.818 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/basic.py:365(lstsq)
     1    0.001    0.001    1.271    1.271 /tmp/vb_sklearn/sklearn/covariance/shrunk_covariance_.py:235(ledoit_wolf)
     3    1.226    0.409    1.226    0.409 {numpy.core._dotblas.dot}
     1    0.007    0.007    0.844    0.844 /tmp/vb_sklearn/sklearn/covariance/shrunk_covariance_.py:144(ledoit_wolf_shrinkage)
     1    0.005    0.005    0.427    0.427 /tmp/vb_sklearn/sklearn/covariance/empirical_covariance_.py:37(empirical_covariance)
     5    0.000    0.000    0.032    0.006 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:1379(sum)
     5    0.032    0.006    0.032    0.006 {method 'sum' of 'numpy.ndarray' objects}
     1    0.031    0.031    0.031    0.031 {method 'mean' of 'numpy.ndarray' objects}
     3    0.021    0.007    0.023    0.008 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/lib/function_base.py:526(asarray_chkfinite)
     1    0.000    0.000    0.016    0.016 {map}
     6    0.003    0.000    0.003    0.000 {method 'any' of 'numpy.ndarray' objects}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:1830(identity)
     1    0.000    0.000    0.000    0.000 {numpy.core.multiarray.zeros}
     1    0.000    0.000    0.000    0.000 /tmp/vb_sklearn/sklearn/utils/validation.py:62(array2d)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:60(get_lapack_funcs)
     9    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:167(asarray)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:986(trace)
    10    0.000    0.000    0.000    0.000 {numpy.core.multiarray.array}
     1    0.000    0.000    0.000    0.000 {method 'trace' of 'numpy.ndarray' objects}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:45(find_best_lapack_type)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/sparse/base.py:553(isspmatrix)
     6    0.000    0.000    0.000    0.000 {isinstance}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/shape_base.py:58(atleast_2d)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/sparse/sputils.py:116(_isinstance)
     1    0.000    0.000    0.000    0.000 {method 'sum' of 'numpy.generic' objects}
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:23(cast_to_lapack_prefix)
     1    0.000    0.000    0.000    0.000 {method 'astype' of 'numpy.generic' objects}
     4    0.000    0.000    0.000    0.000 {method 'split' of 'str' objects}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:237(asanyarray)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:449(isfortran)
     2    0.000    0.000    0.000    0.000 {getattr}
     1    0.000    0.000    0.000    0.000 {min}
     8    0.000    0.000    0.000    0.000 {len}
     4    0.000    0.000    0.000    0.000 {issubclass}
     1    0.000    0.000    0.000    0.000 {range}
     1    0.000    0.000    0.000    0.000 {method 'sort' of 'list' objects}
     4    0.000    0.000    0.000    0.000 {method 'append' of 'list' objects}
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/misc.py:22(_datacopied)
     1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}

LineProfiler

   Timer unit: 1e-06 s

File: /tmp/vb_sklearn/sklearn/covariance/shrunk_covariance_.py
Function: fit at line 365
Total time: 4.24686 s

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
   365                                               def fit(self, X):
   366                                                   """ Fits the Ledoit-Wolf shrunk covariance model
   367                                                   according to the given training data and parameters.
   368
   369                                                   Parameters
   370                                                   ----------
   371                                                   X : array-like, shape = [n_samples, n_features]
   372                                                     Training data, where n_samples is the number of samples
   373                                                     and n_features is the number of features.
   374
   375                                                   Returns
   376                                                   -------
   377                                                   self : object
   378                                                       Returns self.
   379
   380                                                   """
   381                                                   # Not calling the parent object to fit, to avoid computing the
   382                                                   # covariance matrix (and potentially the precision)
   383         1            5      5.0      0.0          if self.assume_centered:
   384                                                       self.location_ = np.zeros(X.shape[1])
   385                                                   else:
   386         1        43886  43886.0      1.0              self.location_ = X.mean(0)
   387         1         4077   4077.0      0.1          covariance, shrinkage = ledoit_wolf(X - self.location_,
   388         1      1373412 1373412.0     32.3                          assume_centered=True, block_size=self.block_size)
   389         1            6      6.0      0.0          self.shrinkage_ = shrinkage
   390         1      2825469 2825469.0     66.5          self._set_covariance(covariance)
   391
   392         1            3      3.0      0.0          return self

OAS-minimadelon

Benchmark setup

from sklearn.covariance import OAS
from deps import load_data

kwargs = {}
X, y, X_t, y_t = load_data('minimadelon')
obj = OAS(**kwargs)

Benchmark statement

obj.fit(X)

Execution time

_images/OAS-minimadelon-step0-timing.png

Memory usage

_images/OAS-minimadelon-step0-memory.png

Additional output

cProfile

         82 function calls in 0.665 seconds

Ordered by: cumulative time

ncalls  tottime  percall  cumtime  percall filename:lineno(function)
     1    0.000    0.000    0.665    0.665 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py:286(f)
     1    0.000    0.000    0.665    0.665 <f>:1(<module>)
     1    0.000    0.000    0.665    0.665 /tmp/vb_sklearn/sklearn/covariance/shrunk_covariance_.py:512(fit)
     1    0.000    0.000    0.650    0.650 /tmp/vb_sklearn/sklearn/covariance/empirical_covariance_.py:98(_set_covariance)
     1    0.000    0.000    0.650    0.650 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/basic.py:457(pinv)
     1    0.626    0.626    0.642    0.642 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/basic.py:365(lstsq)
     3    0.021    0.007    0.023    0.008 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/lib/function_base.py:526(asarray_chkfinite)
     1    0.000    0.000    0.016    0.016 {map}
     1    0.002    0.002    0.015    0.015 /tmp/vb_sklearn/sklearn/covariance/shrunk_covariance_.py:398(oas)
     1    0.006    0.006    0.012    0.012 /tmp/vb_sklearn/sklearn/covariance/empirical_covariance_.py:37(empirical_covariance)
     1    0.007    0.007    0.007    0.007 {numpy.core._dotblas.dot}
     6    0.003    0.000    0.003    0.000 {method 'any' of 'numpy.ndarray' objects}
     2    0.001    0.000    0.001    0.000 {method 'mean' of 'numpy.ndarray' objects}
     1    0.000    0.000    0.001    0.001 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:2299(mean)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:1830(identity)
     1    0.000    0.000    0.000    0.000 {numpy.core.multiarray.zeros}
     1    0.000    0.000    0.000    0.000 /tmp/vb_sklearn/sklearn/utils/validation.py:62(array2d)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:60(get_lapack_funcs)
     8    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:167(asarray)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:986(trace)
     9    0.000    0.000    0.000    0.000 {numpy.core.multiarray.array}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:45(find_best_lapack_type)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/sparse/base.py:553(isspmatrix)
     1    0.000    0.000    0.000    0.000 {method 'trace' of 'numpy.ndarray' objects}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/sparse/sputils.py:116(_isinstance)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/shape_base.py:58(atleast_2d)
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:23(cast_to_lapack_prefix)
     1    0.000    0.000    0.000    0.000 {method 'astype' of 'numpy.generic' objects}
     4    0.000    0.000    0.000    0.000 {method 'split' of 'str' objects}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:237(asanyarray)
     1    0.000    0.000    0.000    0.000 {min}
     2    0.000    0.000    0.000    0.000 {getattr}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:449(isfortran)
     4    0.000    0.000    0.000    0.000 {issubclass}
     7    0.000    0.000    0.000    0.000 {len}
     1    0.000    0.000    0.000    0.000 {isinstance}
     1    0.000    0.000    0.000    0.000 {method 'sort' of 'list' objects}
     4    0.000    0.000    0.000    0.000 {method 'append' of 'list' objects}
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/misc.py:22(_datacopied)
     1    0.000    0.000    0.000    0.000 {range}
     1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}

LineProfiler

   Timer unit: 1e-06 s

File: /tmp/vb_sklearn/sklearn/covariance/shrunk_covariance_.py
Function: fit at line 512
Total time: 0.771003 s

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
   512                                               def fit(self, X):
   513                                                   """ Fits the Oracle Approximating Shrinkage covariance model
   514                                                   according to the given training data and parameters.
   515
   516                                                   Parameters
   517                                                   ----------
   518                                                   X : array-like, shape = [n_samples, n_features]
   519                                                     Training data, where n_samples is the number of samples
   520                                                     and n_features is the number of features.
   521
   522                                                   Returns
   523                                                   -------
   524                                                   self : object
   525                                                       Returns self.
   526
   527                                                   """
   528                                                   # Not calling the parent object to fit, to avoid computing the
   529                                                   # covariance matrix (and potentially the precision)
   530         1            4      4.0      0.0          if self.assume_centered:
   531                                                       self.location_ = np.zeros(X.shape[1])
   532                                                   else:
   533         1          140    140.0      0.0              self.location_ = X.mean(0)
   534
   535         1        24919  24919.0      3.2          covariance, shrinkage = oas(X - self.location_, assume_centered=True)
   536         1            5      5.0      0.0          self.shrinkage_ = shrinkage
   537         1       745931 745931.0     96.7          self._set_covariance(covariance)
   538
   539         1            4      4.0      0.0          return self

OAS-madelon

Benchmark setup

from sklearn.covariance import OAS
from deps import load_data

kwargs = {}
X, y, X_t, y_t = load_data('madelon')
obj = OAS(**kwargs)

Benchmark statement

obj.fit(X)

Execution time

_images/OAS-madelon-step0-timing.png

Memory usage

_images/OAS-madelon-step0-memory.png

Additional output

cProfile

         82 function calls in 3.237 seconds

Ordered by: cumulative time

ncalls  tottime  percall  cumtime  percall filename:lineno(function)
     1    0.000    0.000    3.237    3.237 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/vbench/benchmark.py:286(f)
     1    0.000    0.000    3.237    3.237 <f>:1(<module>)
     1    0.008    0.008    3.237    3.237 /tmp/vb_sklearn/sklearn/covariance/shrunk_covariance_.py:512(fit)
     1    0.000    0.000    2.822    2.822 /tmp/vb_sklearn/sklearn/covariance/empirical_covariance_.py:98(_set_covariance)
     1    0.000    0.000    2.822    2.822 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/basic.py:457(pinv)
     1    2.797    2.797    2.813    2.813 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/basic.py:365(lstsq)
     1    0.002    0.002    0.377    0.377 /tmp/vb_sklearn/sklearn/covariance/shrunk_covariance_.py:398(oas)
     1    0.005    0.005    0.375    0.375 /tmp/vb_sklearn/sklearn/covariance/empirical_covariance_.py:37(empirical_covariance)
     1    0.370    0.370    0.370    0.370 {numpy.core._dotblas.dot}
     2    0.031    0.016    0.031    0.016 {method 'mean' of 'numpy.ndarray' objects}
     3    0.021    0.007    0.024    0.008 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/lib/function_base.py:526(asarray_chkfinite)
     1    0.000    0.000    0.016    0.016 {map}
     6    0.003    0.000    0.003    0.000 {method 'any' of 'numpy.ndarray' objects}
     1    0.000    0.000    0.001    0.001 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:2299(mean)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:1830(identity)
     1    0.000    0.000    0.000    0.000 {numpy.core.multiarray.zeros}
     1    0.000    0.000    0.000    0.000 /tmp/vb_sklearn/sklearn/utils/validation.py:62(array2d)
     8    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:167(asarray)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:60(get_lapack_funcs)
     9    0.000    0.000    0.000    0.000 {numpy.core.multiarray.array}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/fromnumeric.py:986(trace)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:45(find_best_lapack_type)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/sparse/base.py:553(isspmatrix)
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/sparse/sputils.py:116(_isinstance)
     1    0.000    0.000    0.000    0.000 {method 'trace' of 'numpy.ndarray' objects}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/shape_base.py:58(atleast_2d)
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/lapack.py:23(cast_to_lapack_prefix)
     1    0.000    0.000    0.000    0.000 {method 'astype' of 'numpy.generic' objects}
     4    0.000    0.000    0.000    0.000 {method 'split' of 'str' objects}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:237(asanyarray)
     1    0.000    0.000    0.000    0.000 {min}
     2    0.000    0.000    0.000    0.000 {getattr}
     1    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/numpy/core/numeric.py:449(isfortran)
     4    0.000    0.000    0.000    0.000 {issubclass}
     1    0.000    0.000    0.000    0.000 {isinstance}
     4    0.000    0.000    0.000    0.000 {method 'append' of 'list' objects}
     1    0.000    0.000    0.000    0.000 {method 'sort' of 'list' objects}
     7    0.000    0.000    0.000    0.000 {len}
     1    0.000    0.000    0.000    0.000 {range}
     2    0.000    0.000    0.000    0.000 /home/slave/virtualenvs/cpython-2.7.2/lib/python2.7/site-packages/scipy/linalg/misc.py:22(_datacopied)
     1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}

LineProfiler

   Timer unit: 1e-06 s

File: /tmp/vb_sklearn/sklearn/covariance/shrunk_covariance_.py
Function: fit at line 512
Total time: 3.318 s

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
   512                                               def fit(self, X):
   513                                                   """ Fits the Oracle Approximating Shrinkage covariance model
   514                                                   according to the given training data and parameters.
   515
   516                                                   Parameters
   517                                                   ----------
   518                                                   X : array-like, shape = [n_samples, n_features]
   519                                                     Training data, where n_samples is the number of samples
   520                                                     and n_features is the number of features.
   521
   522                                                   Returns
   523                                                   -------
   524                                                   self : object
   525                                                       Returns self.
   526
   527                                                   """
   528                                                   # Not calling the parent object to fit, to avoid computing the
   529                                                   # covariance matrix (and potentially the precision)
   530         1            3      3.0      0.0          if self.assume_centered:
   531                                                       self.location_ = np.zeros(X.shape[1])
   532                                                   else:
   533         1        30369  30369.0      0.9              self.location_ = X.mean(0)
   534
   535         1       471690 471690.0     14.2          covariance, shrinkage = oas(X - self.location_, assume_centered=True)
   536         1            4      4.0      0.0          self.shrinkage_ = shrinkage
   537         1      2815929 2815929.0     84.9          self._set_covariance(covariance)
   538
   539         1            3      3.0      0.0          return self
Previous
Next