8000 API Deprecate data_transposed in make_sparse_coded_signal (#25784) · jeremiedbb/scikit-learn@d226c9d · GitHub
[go: up one dir, main page]

8000
Skip to content

Commit d226c9d

Browse files
authored
API Deprecate data_transposed in make_sparse_coded_signal (scikit-learn#25784)
1 parent a70954d commit d226c9d

File tree

7 files changed

+40
-24
lines changed

7 files changed

+40
-24
lines changed

benchmarks/bench_plot_omp_lars.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def compute_bench(samples_range, features_range):
2727
for i_s, n_samples in enumerate(samples_range):
2828
for i_f, n_features in enumerate(features_range):
2929
it += 1
30-
n_informative = n_features / 10
30+
n_informative = n_features // 10
3131
print("====================")
3232
print("Iteration %03d of %03d" % (it, max_it))
3333
print("====================")
@@ -46,12 +46,11 @@ def compute_bench(samples_range, features_range):
4646
"n_features": n_samples,
4747
"n_nonzero_coefs": n_informative,
4848
"random_state": 0,
49-
"data_transposed": True,
5049
}
5150
print("n_samples: %d" % n_samples)
5251
print("n_features: %d" % n_features)
5352
y, X, _ = make_sparse_coded_signal(**dataset_kwargs)
54-
X = np.asfortranarray(X)
53+
X = np.asfortranarray(X.T)
5554

5655
gc.collect()
5756
print("benchmarking lars_path (with Gram):", end="")

doc/whats_new/v1.3.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,13 @@ Changelog
110110
is now deprecated and will be removed in v1.5.
111111
:pr:`25251` by :user:`Gleb Levitski <glevv>`.
112112

113+
:mod:`sklearn.datasets`
114+
.......................
115+
116+
- |API| The `data_transposed` argument of :func:`datasets.make_sparse_coded_signal`
117+
is deprecated and will be removed in v1.5.
118+
:pr:`25784` by :user:`Jérémie du Boisberranger`.
119+
113120
:mod:`sklearn.decomposition`
114121
............................
115122

examples/linear_model/plot_omp.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
n_features=n_features,
2929
n_nonzero_coefs=n_nonzero_coefs,
3030
random_state=0,
31-
data_transposed=True,
3231
)
32+
X = X.T
3333

3434
(idx,) = w.nonzero()
3535

sklearn/datasets/_samples_generator.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1278,18 +1278,14 @@ def make_low_rank_matrix(
12781278
return np.dot(np.dot(u, s), v.T)
12791279

12801280

1281-
# TODO(1.3): Change argument `data_transposed` default from True to False.
1282-
# TODO(1.3): Deprecate data_transposed, always return data not transposed.
1283-
1284-
12851281
@validate_params(
12861282
{
12871283
"n_samples": [Interval(Integral, 1, None, closed="left")],
12881284
"n_components": [Interval(Integral, 1, None, closed="left")],
12891285
"n_features": [Interval(Integral, 1, None, closed="left")],
12901286
"n_nonzero_coefs": [Interval(Integral, 1, None, closed="left")],
12911287
"random_state": ["random_state"],
1292-
"data_transposed": ["boolean", Hidden(StrOptions({"warn"}))],
1288+
"data_transposed": ["boolean", Hidden(StrOptions({"deprecated"}))],
12931289
}
12941290
)
12951291
def make_sparse_coded_signal(
@@ -1299,7 +1295,7 @@ def make_sparse_coded_signal(
12991295
n_features,
13001296
n_nonzero_coefs,
13011297
random_state=None,
1302-
data_transposed="warn",
1298+
data_transposed="deprecated",
13031299
):
13041300
"""Generate a signal as a sparse combination of dictionary elements.
13051301
@@ -1328,11 +1324,17 @@ def make_sparse_coded_signal(
13281324
for reproducible output across multiple function calls.
13291325
See :term:`Glossary <random_state>`.
13301326
1331-
data_transposed : bool, default=True
1332-
By default, Y, D and X are transposed.
1327+
data_transposed : bool, default=False
1328+
By default, Y, D and X are not transposed.
13331329
13341330
.. versionadded:: 1.1
13351331
1332+
.. versionchanged:: 1.3
1333+
Default value changed from True to False.
1334+
1335+
.. deprecated:: 1.3
1336+
`data_transposed` is deprecated and will be removed in 1.5.
1337+
13361338
Returns
13371339
-------
13381340
data : ndarray of shape (n_features, n_samples) or (n_samples, n_features)
@@ -1367,14 +1369,15 @@ def make_sparse_coded_signal(
13671369
# encode signal
13681370
Y = np.dot(D, X)
13691371

1372+
# TODO(1.5) remove data_transposed
13701373
# raise warning if data_transposed is not passed explicitly
1371-
if data_transposed == "warn":
1372-
data_transposed = True
1374+
if data_transposed != "deprecated":
13731375
warnings.warn(
1374-
"The default value of data_transposed will change from True to False in"
1375-
" version 1.3",
1376+
"data_transposed was deprecated in version 1.3 and will be removed in 1.5.",
13761377
FutureWarning,
13771378
)
1379+
else:
1380+
data_transposed = False
13781381

13791382
# transpose if needed
13801383
if not data_transposed:

sklearn/datasets/tests/test_samples_generator.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from sklearn.utils._testing import assert_almost_equal
1111
from sklearn.utils._testing import assert_array_almost_equal
1212
from sklearn.utils._testing import assert_allclose
13+
from sklearn.utils._testing import ignore_warnings
1314

1415
from sklearn.datasets import make_classification
1516
from sklearn.datasets import make_multilabel_classification
@@ -497,7 +498,6 @@ def test_make_sparse_coded_signal():
497498
n_features=10,
498499
n_nonzero_coefs=3,
499500
random_state=0,
500-
data_transposed=False,
501501
)
502502
assert Y.shape == (5, 10), "Y shape mismatch"
503503
assert D.shape == (8, 10), "D shape mismatch"
@@ -508,6 +508,8 @@ def test_make_sparse_coded_signal():
508508
assert_allclose(np.sqrt((D**2).sum(axis=1)), np.ones(D.shape[0]))
509509

510510

511+
# TODO(1.5): remove
512+
@ignore_warnings(category=FutureWarning)
511513
def test_make_sparse_coded_signal_transposed():
512514
Y, D, X = make_sparse_coded_signal(
513515
n_samples=5,
@@ -526,13 +528,18 @@ def test_make_sparse_coded_signal_transposed():
526528
assert_allclose(np.sqrt((D**2).sum(axis=0)), np.ones(D.shape[1]))
527529

528530

529-
# TODO(1.3): remove
530-
def test_make_sparse_code_signal_warning():
531+
# TODO(1.5): remove
532+
def test_make_sparse_code_signal_deprecation_warning():
531533
"""Check the message for future deprecation."""
532-
warn_msg = "The default value of data_transposed will change from True to False"
534+
warn_msg = "data_transposed was deprecated in version 1.3"
533535
with pytest.warns(FutureWarning, match=warn_msg):
534536
make_sparse_coded_signal(
535-
n_samples=1, n_components=1, n_features=1, n_nonzero_coefs=1, random_state=0
537+
n_samples=1,
538+
n_components=1,
539+
n_features=1,
540+
n_nonzero_coefs=1,
541+
random_state=0,
542+
data_transposed=True,
536543
)
537544

538545

sklearn/decomposition/_dict_learning.py

F89A Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1687,7 +1687,7 @@ class DictionaryLearning(_BaseSparseCoding, BaseEstimator):
16871687
>>> from sklearn.decomposition import DictionaryLearning
16881688
>>> X, dictionary, code = make_sparse_coded_signal(
16891689
... n_samples=100, n_components=15, n_features=20, n_nonzero_coefs=10,
1690-
... random_state=42, data_transposed=False
1690+
... random_state=42,
16911691
... )
16921692
>>> dict_learner = DictionaryLearning(
16931693
... n_components=15, transform_algorithm='lasso_lars', transform_alpha=0.1,
@@ -2059,7 +2059,7 @@ class MiniBatchDictionaryLearning(_BaseSparseCoding, BaseEstimator):
20592059
>>> from sklearn.decomposition import MiniBatchDictionaryLearning
20602060
>>> X, dictionary, code = make_sparse_coded_signal(
20612061
... n_samples=100, n_components=15, n_features=20, n_nonzero_coefs=10,
2062-
... random_state=42, data_transposed=False)
2062+
... random_state=42)
20632063
>>> dict_learner = MiniBatchDictionaryLearning(
20642064
... n_components=15, batch_size=3, transform_algorithm='lasso_lars',
20652065
... transform_alpha=0.1, random_state=42)

sklearn/linear_model/tests/test_omp.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
n_features=n_samples,
2929
n_nonzero_coefs=n_nonzero_coefs,
3030
random_state=0,
31-
data_transposed=True,
3231
)
32+
y, X, gamma = y.T, X.T, gamma.T
3333
# Make X not of norm 1 for testing
3434
X *= 10
3535
y *= 10

0 commit comments

Comments
 (0)
0