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

Skip to content

Commit 2c2897a

Browse files
author
giorgiop
committed
test with sparse data
1 parent c1c35d0 commit 2c2897a

File tree

1 file changed

+31
-27
lines changed

1 file changed

+31
-27
lines changed

sklearn/linear_model/tests/test_base.py

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@
1010
from sklearn.utils.testing import assert_equal
1111

1212
from sklearn.linear_model.base import LinearRegression
13-
from sklearn.linear_model.base import center_data, sparse_center_data, _rescale_data
13+
from sklearn.linear_model.base import center_data
14+
from sklearn.linear_model.base import sparse_center_data
15+
from sklearn.linear_model.base import _rescale_data
16+
from sklearn.utils.extmath import safe_sparse_dot
1417
from sklearn.utils import check_random_state
15-
from sklearn.utils.testing import assert_raise_message
1618
from sklearn.utils.testing import assert_greater
1719
from sklearn.datasets.samples_generator import make_sparse_uncorrelated
1820
from sklearn.datasets.samples_generator import make_regression
@@ -47,31 +49,33 @@ def test_linear_regression_sample_weights():
4749
rng = np.random.RandomState(0)
4850
n_samples, n_features = 6, 50 # over-determined system
4951

50-
for fit_intercept in [True, False]:
51-
y = rng.randn(n_samples)
52-
X = rng.randn(n_samples, n_features)
53-
sample_weight = 1.0 + rng.rand(n_samples)
54-
55-
reg = LinearRegression(fit_intercept=fit_intercept)
56-
reg.fit(X, y, sample_weight=sample_weight)
57-
coefs1 = reg.coef_
58-
intercept1 = reg.intercept_
59-
60-
assert_equal(reg.coef_.shape, (X.shape[1], ))
61-
assert_greater(reg.score(X, y, sample_weight=sample_weight), 0.9)
62-
assert_greater(r2_score(y, reg.predict(X),
63-
sample_weight=sample_weight), 0.9) # same as above
64-
65-
# Sample weight can be implemented via a simple rescaling
66-
# for the square loss.
67-
scaled_y = y * np.sqrt(sample_weight)
68-
scaled_X = X * np.sqrt(sample_weight)[:, np.newaxis]
69-
reg.fit(scaled_X, scaled_y)
70-
coefs2 = reg.coef_
71-
intercept2 = reg.intercept_
72-
73-
assert_array_almost_equal(coefs1, coefs2)
74-
assert_array_almost_equal(intercept1, intercept2)
52+
y = rng.randn(n_samples)
53+
X_ = rng.randn(n_samples, n_features)
54+
sample_weight = 1.0 + rng.rand(n_samples)
55+
56+
for X in [X_, sparse.csr_matrix(X_)]:
57+
for fit_intercept in [True, False]:
58+
reg = LinearRegression(fit_intercept=fit_intercept)
59+
reg.fit(X, y, sample_weight=sample_weight)
60+
coefs1 = reg.coef_
61+
intercept1 = reg.intercept_
62+
63+
assert_equal(reg.coef_.shape, (X.shape[1], ))
64+
assert_greater(reg.score(X, y, sample_weight=sample_weight), 0.9)
65+
assert_greater(r2_score(y, reg.predict(X),
66+
sample_weight=sample_weight), 0.9) # same as above
67+
68+
# Sample weight can be implemented via a simple rescaling
69+
# for the square loss.
70+
scaled_y = y * np.sqrt(sample_weight)
71+
scaled_X = \
72+
safe_sparse_dot(np.diag(np.sqrt(sample_weight)), X)
73+
reg.fit(scaled_X, scaled_y)
74+
coefs2 = reg.coef_
75+
intercept2 = reg.intercept_
76+
77+
assert_array_almost_equal(coefs1, coefs2)
78+
assert_array_almost_equal(intercept1, intercept2)
7579

7680

7781
def test_raises_value_error_if_sample_weights_greater_than_1d():

0 commit comments

Comments
 (0)