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

Skip to content

Commit 7f9ab5a

Browse files
committed
added test_pca_lobpcg_solver to test_pca
1 parent 3661ef5 commit 7f9ab5a

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

sklearn/decomposition/tests/test_pca.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,43 @@ def test_pca_randomized_solver():
137137
svd_solver='randomized', random_state=0).svd_solver)
138138

139139

140+
def test_pca_lobpcg_solver():
141+
# PCA on dense arrays
142+
X = iris.data
143+
144+
# Loop excluding the 0, invalid for lobpcg
145+
for n_comp in np.arange(1, X.shape[1]):
146+
pca = PCA(n_components=n_comp, svd_solver='lobpcg', random_state=0)
147+
148+
X_r = pca.fit(X).transform(X)
149+
np.testing.assert_equal(X_r.shape[1], n_comp)
150+
151+
X_r2 = pca.fit_transform(X)
152+
assert_array_almost_equal(X_r, X_r2)
153+
154+
X_r = pca.transform(X)
155+
assert_array_almost_equal(X_r, X_r2)
156+
157+
# Test get_covariance and get_precision
158+
cov = pca.get_covariance()
159+
precision = pca.get_precision()
160+
assert_array_almost_equal(np.dot(cov, precision),
161+
np.eye(X.shape[1]), 12)
162+
163+
pca = PCA(n_components=0, svd_solver='lobpcg', random_state=0)
164+
assert_raises(ValueError, pca.fit, X)
165+
166+
pca = PCA(n_components=0, svd_solver='lobpcg', random_state=0)
167+
assert_raises(ValueError, pca.fit, X)
168+
# Check internal state
169+
assert_equal(pca.n_components,
170+
PCA(n_components=0,
171+
svd_solver='lobpcg', random_state=0).n_components)
172+
assert_equal(pca.svd_solver,
173+
PCA(n_components=0,
174+
svd_solver='lobpcg', random_state=0).svd_solver)
175+
176+
140177
def test_no_empty_slice_warning():
141178
# test if we avoid numpy warnings for computing over empty arrays
142179
n_components = 10

0 commit comments

Comments
 (0)