code: def test_raise_error_no_clf_fit():
      class struct(object):
          def predict(self):
              pass
  
          def predict_proba(self):
              pass
  
      try:
          CleanLearning(clf=struct())
      except Exception as e:
          assert "fit" in str(e)
          with pytest.raises(ValueError) as e:
              CleanLearning(clf=struct())
  
imports: from copy import deepcopy
  import warnings
  from sklearn.linear_model import LogisticRegression
  from sklearn.base import BaseEstimator
  from sklearn.model_selection import GridSearchCV
  import scipy
  import pytest
  import numpy
  import pandas
  from cleanlab.classification import CleanLearning
  from cleanlab.benchmarking.noise_generation import generate_noise_matrix_from_trace
  from cleanlab.benchmarking.noise_generation import generate_noisy_labels
  from cleanlab.internal.latent_algebra import compute_inv_noise_matrix
  from cleanlab.count import compute_confident_joint, estimate_cv_predicted_probabilities, get_confident_thresholds
  from cleanlab.filter import find_label_issues
label_desc: Use image node_id 11 for calling a global function with example usage: test_raise_error_no_clf_fit() without return types