code: def test_given_polynomial_classification_data_with_categorical_input_when_auto_assign_causal_models_then_does_not_raise_error():
      X = np.random.normal(0, 1, (100, 2))
      Y = []
  
      for x in X:
          if x[0] * x[1] > 0:
              Y.append("Class 0")
          else:
              Y.append("Class 1")
  
      Y = np.array(Y)
  
      causal_model = ProbabilisticCausalModel(
          nx.DiGraph([("X0", "Y"), ("X1", "Y")])
      )
      data = {"X" + str(i): X[:, i] for i in range(X.shape[1])}
      data.update({"Y": Y})
  
      assign_causal_mechanisms(
          causal_model,
          pd.DataFrame(data),
          quality=AssignmentQuality.BETTER,
      )
      assign_causal_mechanisms(
          causal_model,
          pd.DataFrame(data),
          quality=AssignmentQuality.GOOD,
          override_models=True,
      )
  
imports: import networkx
  import numpy
  import pandas
  import pytest
  from _pytest.python_api import approx
  from flaky import flaky
  from pytest import mark
  from sklearn.ensemble import HistGradientBoostingClassifier, HistGradientBoostingRegressor
  from sklearn.linear_model import ElasticNetCV, LassoCV, LinearRegression, LogisticRegression, RidgeCV
  from sklearn.naive_bayes import GaussianNB
  from sklearn.pipeline import Pipeline
  from dowhy.gcm import AdditiveNoiseModel, DiscreteAdditiveNoiseModel, EmpiricalDistribution, ProbabilisticCausalModel, StructuralCausalModel, draw_samples, fit
  from dowhy.gcm.auto import AssignmentQuality, assign_causal_mechanisms, has_linear_relationship
label_desc: Use image node_id 14 for calling a global function with example usage: test_given_polynomial_classification_data_with_categorical_input_when_auto_assign_causal_models_then_does_not_raise_error() without return types