Timmy,
Interesting... this means that none of the earlier ideas were on the 
right track, or else we'd see the same error for standard and modified.  
It turns out that Hessian and LTSA do very similar things.  I still 
haven't wrapped my mind around it intuitively, but what you're seeing 
probably means that the hessian estimator is identical in two 
neighborhoods.  I'm confused by the fact that adding noise and changing 
the number of neighbors is not affecting things...

Can you try using eigen_solver='dense' (that should get around the 
problem, though it will be slow) and taking a look at the results to see 
if they're anywhere close to what standard and modified LLE give you?
  Jake

Timmy Wilson wrote:
> 'standard' + 'modified' both work fine
>
> 'hessian' + 'ltsa' both have issues
>
> ltsa is printing:
>
> RuntimeWarning: Diagonal number 2 is exactly zero. Singular matrix.
>
> and then setting everything to -nan
>
> i tried adding random noise and increasing n_neighbors -- but no dice
>
> Fabian's suggestion is still under review --
> https://github.com/scikit-learn/scikit-learn/pull/457
>
>
>
> On Thu, Dec 8, 2011 at 11:39 AM, Fabian Pedregosa
> <[email protected]> wrote:
>   
>> I reduced the problem to a difference of results with eigsh when
>> working in shift-invert mode and when not. Notice that the following
>> works with sigma=None but not with sigma=0. , thus seems to me that we
>> should fall back to non invert-mode for singular matrices (see
>> asociated pull request).
>>
>> ```
>> In [8]: M = sparse.csr_matrix([[1, 1, 1], [1, 1, 1], [1, 1, 1.]])
>>
>> In [9]: linalg.eigsh(M, 1)
>> Out[9]:
>> (array([ 3.]),
>>  array([[-0.57735027],
>>       [-0.57735027],
>>       [-0.57735027]]))
>>
>> In [10]: linalg.eigsh(M, 1, sigma=0.)
>> ---------------------------------------------------------------------------
>> RuntimeError                              Traceback (most recent call last)
>> /home/fabian/dev/sandbox/<ipython-input-10-f646f5be93ec> in <module>()
>> ----> 1 linalg.eigsh(M, 1, sigma=0.)
>>
>> /home/fabian/envs/p26/lib/python2.6/site-packages/scipy/sparse/linalg/eigen/arpack/arpack.pyc
>> in eigsh(A, k, M, sigma, which, v0, ncv, maxiter, tol,
>> return_eigenvectors, Minv, OPinv, mode)
>>   1484             if OPinv is None:
>>   1485                 Minv_matvec = get_OPinv_matvec(A, M, sigma,
>> -> 1486                                                symmetric=True, 
>> tol=tol)
>>   1487             else:
>>   1488                 OPinv = _aslinearoperator_with_dtype(OPinv)
>>
>> /home/fabian/envs/p26/lib/python2.6/site-packages/scipy/sparse/linalg/eigen/arpack/arpack.pyc
>> in get_OPinv_matvec(A, M, sigma, symmetric, tol)
>>   1004 def get_OPinv_matvec(A, M, sigma, symmetric=False, tol=0):
>>   1005     if sigma == 0:
>> -> 1006         return get_inv_matvec(A, symmetric=symmetric, tol=tol)
>>   1007
>>   1008     if M is None:
>>
>> /home/fabian/envs/p26/lib/python2.6/site-packages/scipy/sparse/linalg/eigen/arpack/arpack.pyc
>> in get_inv_matvec(M, symmetric, tol)
>>    997         if isspmatrix_csr(M) and symmetric:
>>    998             M = M.T
>> --> 999         return SpLuInv(M).matvec
>>   1000     else:
>>   1001         return IterInv(M, tol=tol).matvec
>>
>> /home/fabian/envs/p26/lib/python2.6/site-packages/scipy/sparse/linalg/eigen/arpack/arpack.pyc
>> in __init__(self, M)
>>    890     """
>>    891     def __init__(self, M):
>> --> 892         self.M_lu = splu(M)
>>    893         LinearOperator.__init__(self, M.shape, self._matvec,
>> dtype=M.dtype)
>>    894         self.isreal = not np.issubdtype(self.dtype, 
>> np.complexfloating)
>>
>> /home/fabian/envs/p26/lib/python2.6/site-packages/scipy/sparse/linalg/dsolve/linsolve.pyc
>> in splu(A, permc_spec, diag_pivot_thresh, drop_tol, relax, panel_size,
>> options)
>>    171         _options.update(options)
>>    172     return _superlu.gstrf(N, A.nnz, A.data, A.indices, A.indptr,
>> --> 173                           ilu=False, options=_options)
>>    174
>>    175 def spilu(A, drop_tol=None, fill_factor=None, drop_rule=None,
>> permc_spec=None,
>>
>> RuntimeError: Factor is exactly singular
>>
>> In [11]:
>> ```
>>
>> ------------------------------------------------------------------------------
>> Cloud Services Checklist: Pricing and Packaging Optimization
>> This white paper is intended to serve as a reference, checklist and point of
>> discussion for anyone considering optimizing the pricing and packaging model
>> of a cloud services business. Read Now!
>> http://www.accelacomm.com/jaw/sfnl/114/51491232/
>> _______________________________________________
>> Scikit-learn-general mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/scikit-learn-general
>>     
>
> ------------------------------------------------------------------------------
> Cloud Services Checklist: Pricing and Packaging Optimization
> This white paper is intended to serve as a reference, checklist and point of 
> discussion for anyone considering optimizing the pricing and packaging model 
> of a cloud services business. Read Now!
> http://www.accelacomm.com/jaw/sfnl/114/51491232/
> _______________________________________________
> Scikit-learn-general mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/scikit-learn-general
>   

------------------------------------------------------------------------------
Cloud Services Checklist: Pricing and Packaging Optimization
This white paper is intended to serve as a reference, checklist and point of 
discussion for anyone considering optimizing the pricing and packaging model 
of a cloud services business. Read Now!
http://www.accelacomm.com/jaw/sfnl/114/51491232/
_______________________________________________
Scikit-learn-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/scikit-learn-general

Reply via email to