code: def _fit_model_pca(self, model, precompute=False):
      data = load_digits()
      X_train, X_test, y_train, y_test = train_test_split(
          data.data, data.target, test_size=0.2, random_state=42
      )
      X_test = X_test.astype("float32")
      if precompute:
          # For precompute we use a linear kernel
          model.fit(np.dot(X_train, X_train.T))
          X_test = np.dot(X_test, X_train.T)
      else:
          model.fit(X_train)
  
      torch_model = hummingbird.ml.convert(model, "torch")
      self.assertTrue(torch_model is not None)
      np.testing.assert_allclose(
          model.transform(X_test),
          torch_model.transform(X_test),
          rtol=1e-6,
          atol=2 * 1e-5,
      )
  
imports: import unittest
  import warnings
  import sys
  from packaging.version import Version, parse
  import numpy
  import torch
  import sklearn
  from sklearn.decomposition import FastICA, KernelPCA, PCA, TruncatedSVD
  from sklearn.cross_decomposition import PLSRegression
  from sklearn.model_selection import train_test_split
  from sklearn.datasets import load_digits
  import hummingbird.ml
label_desc: Use image node_id 1 for calling the TestSklearnMatrixDecomposition obj's underlying member method code with example usage: obj._fit_model_pca(model, precompute) without return types