Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit bbb8f1d

Browse files
committed
Moved sparsefuncs to sparsefuncs_fast
1 parent 8cf30f1 commit bbb8f1d

File tree

12 files changed

+682
-1155
lines changed

12 files changed

+682
-1155
lines changed

sklearn/cluster/_k_means.c

Lines changed: 188 additions & 188 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sklearn/cluster/_k_means.pyx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ cimport numpy as np
1515
cimport cython
1616

1717
from ..utils.extmath import norm
18-
from sklearn.utils.sparsefuncs cimport add_row_csr
18+
from sklearn.utils.sparsefuncs_fast cimport add_row_csr
1919

2020
ctypedef np.float64_t DOUBLE
2121
ctypedef np.int32_t INT

sklearn/cluster/k_means_.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
from ..base import BaseEstimator, ClusterMixin, TransformerMixin
2020
from ..metrics.pairwise import euclidean_distances
2121
from ..utils.extmath import row_norms
22-
from ..utils.sparsefuncs import assign_rows_csr, mean_variance_axis0
22+
from ..utils.sparsefuncs_fast import assign_rows_csr
23+
from ..utils.sparsefuncs import mean_variance_axis0
2324
from ..utils import check_arrays
2425
from ..utils import check_random_state
2526
from ..utils import atleast2d_or_csr

sklearn/feature_selection/variance_threshold.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from ..base import BaseEstimator
66
from .base import SelectorMixin
77
from ..utils import atleast2d_or_csr
8-
from ..utils.sparsefuncs import csr_mean_variance_axis0
8+
from ..utils.sparsefuncs_fast import csr_mean_variance_axis0
99

1010

1111
class VarianceThreshold(BaseEstimator, SelectorMixin):

sklearn/preprocessing/data.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020
from ..utils import safe_asarray
2121
from ..utils import warn_if_not_float
2222
from ..utils.extmath import row_norms
23-
from ..utils.sparsefuncs import inplace_csr_row_normalize_l1
24-
from ..utils.sparsefuncs import inplace_csr_row_normalize_l2
25-
from ..utils.sparsefuncs import inplace_csr_column_scale
23+
from ..utils.sparsefuncs_fast import inplace_csr_row_normalize_l1
24+
from ..utils.sparsefuncs_fast import inplace_csr_row_normalize_l2
25+
from ..utils.sparsefuncs_fast import inplace_csr_column_scale
2626
from ..utils.sparsefuncs import mean_variance_axis0
2727

2828
zip = six.moves.zip

sklearn/utils/extmath.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from .fixes import np_version
1818
from ._logistic_sigmoid import _log_logistic_sigmoid
1919
from ..externals.six.moves import xrange
20-
from .sparsefuncs import csr_row_norms
20+
from .sparsefuncs_fast import csr_row_norms
2121
from .validation import array2d, NonBLASDotWarning
2222

2323

sklearn/utils/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def configuration(parent_package='', top_path=None):
2222
libraries.append('m')
2323
cblas_libs.append('m')
2424

25-
config.add_extension('sparsefuncs', sources=['sparsefuncs.c'],
25+
config.add_extension('sparsefuncs_fast', sources=['sparsefuncs_fast.c'],
2626
libraries=libraries)
2727

2828
config.add_extension('arrayfuncs',

sklearn/utils/sparsefuncs.py

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# Authors: Manoj Kumar
2+
3+
# License: BSD 3 clause
4+
import scipy.sparse as sp
5+
6+
from .sparsefuncs_fast import (csr_mean_variance_axis0,
7+
csc_mean_variance_axis0,
8+
inplace_csr_column_scale,
9+
inplace_csc_column_scale)
10+
11+
def mean_variance_axis0(X):
12+
"""Compute mean and variance along axis 0 on a CSR or CSC matrix
13+
14+
Parameters
15+
----------
16+
X: CSR or CSC sparse matrix, shape (n_samples, n_features)
17+
Input data.
18+
19+
Returns
20+
-------
21+
22+
means: float array with shape (n_features,)
23+
Feature-wise means
24+
25+
variances: float array with shape (n_features,)
26+
Feature-wise variances
27+
28+
"""
29+
if isinstance(X, sp.csr_matrix):
30+
return csr_mean_variance_axis0(X)
31+
elif isinstance(X, sp.csc_matrix):
32+
return csc_mean_variance_axis0(X)
33+
else:
34+
raise TypeError(
35+
"Unsupported type; expected a CSR or CSC sparse matrix.")
36+
37+
38+
def inplace_column_scale(X, scale):
39+
"""Inplace column scaling of a CSC/CSR matrix.
40+
41+
Scale each feature of the data matrix by multiplying with specific scale
42+
provided by the caller assuming a (n_samples, n_features) shape.
43+
44+
Parameters
45+
----------
46+
X: CSC or CSR matrix with shape (n_samples, n_features)
47+
Matrix to normalize using the variance of the features.
48+
49+
scale: float array with shape (n_features,)
50+
Array of precomputed feature-wise values to use for scaling.
51+
"""
52+
if isinstance(X, sp.csr_matrix):
53+
return inplace_csr_column_scale(X, scale)
54+
elif isinstance(X, sp.csc_matrix):
55+
return inplace_csc_column_scale(X, scale)
56+
else:
57+
raise TypeError(
58+
"Unsupported type; expected a CSR or CSC sparse matrix.")

sklearn/utils/sparsefuncs.c renamed to sklearn/utils/sparsefuncs_fast.c

Lines changed: 423 additions & 906 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
File renamed without changes.

sklearn/utils/sparsefuncs.pyx renamed to sklearn/utils/sparsefuncs_fast.pyx

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -291,56 +291,6 @@ def inplace_csc_column_scale(X, np.ndarray[DOUBLE, ndim=1] scale):
291291
X_data[j] *= scale[i]
292292

293293

294-
def inplace_column_scale(X, np.ndarray[DOUBLE, ndim=1] scale):
295-
"""Inplace column scaling of a CSC/CSR matrix.
296-
297-
Scale each feature of the data matrix by multiplying with specific scale
298-
provided by the caller assuming a (n_samples, n_features) shape.
299-
300-
Parameters
301-
----------
302-
X: CSC or CSR matrix with shape (n_samples, n_features)
303-
Matrix to normalize using the variance of the features.
304-
305-
scale: float array with shape (n_features,)
306-
Array of precomputed feature-wise values to use for scaling.
307-
"""
308-
if isinstance(X, sp.csr_matrix):
309-
return inplace_csr_column_scale(X, scale)
310-
elif isinstance(X, sp.csc_matrix):
311-
return inplace_csc_column_scale(X, scale)
312-
else:
313-
raise TypeError(
314-
"Unsupported type; expected a CSR or CSC sparse matrix.")
315-
316-
317-
def mean_variance_axis0(X):
318-
"""Compute mean and variance along axis 0 on a CSR or CSC matrix
319-
320-
Parameters
321-
----------
322-
X: CSR or CSC sparse matrix, shape (n_samples, n_features)
323-
Input data.
324-
325-
Returns
326-
-------
327-
328-
means: float array with shape (n_features,)
329-
Feature-wise means
330-
331-
variances: float array with shape (n_features,)
332-
Feature-wise variances
333-
334-
"""
335-
if isinstance(X, sp.csr_matrix):
336-
return csr_mean_variance_axis0(X)
337-
elif isinstance(X, sp.csc_matrix):
338-
return csc_mean_variance_axis0(X)
339-
else:
340-
raise TypeError(
341-
"Unsupported type; expected a CSR or CSC sparse matrix.")
342-
343-
344294
@cython.boundscheck(False)
345295
@cython.wraparound(False)
346296
cdef void add_row_csr(np.ndarray[np.float64_t, ndim=1] data,

sklearn/utils/tests/test_sparsefuncs.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
from numpy.testing import assert_array_almost_equal, assert_array_equal
44

55
from sklearn.datasets import make_classification
6-
from sklearn.utils.sparsefuncs import (assign_rows_csr, mean_variance_axis0,
7-
inplace_csc_column_scale,
8-
inplace_csr_column_scale)
6+
from sklearn.utils.sparsefuncs import mean_variance_axis0
7+
from sklearn.utils.sparsefuncs_fast import (assign_rows_csr,
8+
inplace_csc_column_scale,
9+
inplace_csr_column_scale)
910

1011
def test_mean_variance_axis0():
1112
X, _ = make_classification(5, 4, random_state=0)

0 commit comments

Comments
 (0)