`v0 = random_state.rand(M.shape[0])` leads to an initial residual vector in ARPACK which is all positive. However, this is not the absolute or squared residual, but a true difference. Thus, it is better to initialize with `v0=random_state.uniform(-1, 1, M.shape[0])` to have an equally distributed sign. This is the way that ARPACK initializes the residuals.
The effect of the previous initialization is that eigsh frequently does not converge to the correct eigenvalues, e.g. negative eigenvalues for s.p.d. matrix, which leads to an incorrect null-space.
- initialized all occurences of sklearn.utils.arpack.eigsh the same way it would be initialzed by ARPACK
- regression test to test behavior of new initialization
ENH NonBLASDotWarning -> EfficiencyWarning; Improve error message
DOC Add exceptions module to modules/classes.rst
MAINT Move ConvergenceWarning, UndefinedMetricWarning et al into exceptions
MAINT Remove ChangedBehaviorWarning from base
DOC/FIX Improve DataConversionWarning's docstring
Passing 1D arrays to check_array, without setting `ensure_2d` to false now
raises a deprecation warning before reshaping it. This will later throw an
error.
All Scaler classes also throw warnings when 1D arrays are passed.
All unit tests/doctests are modified to ensure that no 1D arrays are passed,
except in explicit 1D array tests where the warnings have been silenced.
Additional tests are also included which check for different 1D array cases.
2D array tests with one samples and one features are also added and where
they failed, `check_array` call has been modified to give a more useful error
message
ENH improve check_array to warn on dtype conversions
ENH make check_array accept several dtypes
ENH change validation with improved check_array
ENH change astype to avoid copy if possible
ENH remove warn_if_not_float
This makes little difference, and original DBSCAN did not shuffle.
Warn if `random_state` is used.
As is `random_state` encourages users to experiment with different
randomization, as you would do with k-means. But in contrast to
k-means, the output of DBSCAN is deterministic except for cluster
enumeration and "rare" cases, where a point is on the border of
two clusters at the same time. As this affects single points only,
the measureable performance difference will be close to zero.
Also, incorporate fix for minpts including the query point.