code: def test_pca():
      # PCA on dense arrays
  
      for n_comp in np.arange(X.shape[1]):
          pca = dd.PCA(n_components=n_comp, svd_solver="full")
  
          X_r = pca.fit(dX).transform(dX)
          np.testing.assert_equal(X_r.shape[1], n_comp)
  
          X_r2 = pca.fit_transform(dX)
          # TODO: Have to call compute here, since these don't pass _check_dsk
          assert_eq(X_r.compute(), X_r2.compute())
  
          X_r = pca.transform(dX)
          X_r2 = pca.fit_transform(dX)
          assert_array_almost_equal(X_r, X_r2)
  
          # Test get_covariance and get_precision
          cov = pca.get_covariance()
          precision = pca.get_precision()
          assert_array_almost_equal(
              np.dot(cov, precision), np.eye(X.shape[1]), 12
          )
  
      # test explained_variance_ratio_ == 1 with all components
      pca = dd.PCA(svd_solver="full")
      pca.fit(dX)
      assert_almost_equal(pca.explained_variance_ratio_.sum(), 1.0, 3)
  
imports: from itertools import product
  import dask.array
  import dask.dataframe
  import numpy
  import pandas
  import pytest
  import scipy
  import sklearn.decomposition
  from dask.array.utils import assert_eq
  from numpy.testing import assert_almost_equal, assert_array_almost_equal, assert_raises
  from sklearn import datasets
  from sklearn.utils import check_random_state
  import dask_ml.decomposition
  from dask_ml._compat import DASK_2_26_0
  from dask_ml.utils import assert_estimator_equal, flip_vector_signs, svd_flip
label_desc: Use image node_id 2 for calling a global function with example usage: test_pca() without return types