code: def test_multiclass_classifier_evaluator(self):
      df1 = self.spark.createDataFrame(
          [
              (1, 1),
              (1, 1),
              (2, 3),
              (0, 0),
              (0, 1),
              (3, 1),
              (3, 3),
              (2, 2),
              (1, 0),
              (2, 2),
          ],
          schema=["label", "prediction"],
      )
  
      local_df1 = df1.toPandas()
  
      accuracy_evaluator = MulticlassClassificationEvaluator(
          metricName="accuracy",
          labelCol="label",
          predictionCol="prediction",
      )
  
      expected_accuracy = 0.600
      accuracy = accuracy_evaluator.evaluate(df1)
      accuracy_local = accuracy_evaluator.evaluate(local_df1)
      np.testing.assert_almost_equal(
          accuracy, expected_accuracy, decimal=2
      )
      np.testing.assert_almost_equal(
          accuracy_local, expected_accuracy, decimal=2
      )
  
      # Test save / load
      with tempfile.TemporaryDirectory() as tmp_dir:
          accuracy_evaluator.saveToLocal(f"{tmp_dir}/ev")
          loaded_evaluator = RegressionEvaluator.loadFromLocal(
              f"{tmp_dir}/ev"
          )
          assert loaded_evaluator.getMetricName() == "accuracy"
  
file_path: spark/python/pyspark/ml/tests/connect/test_legacy_mode_evaluation.py
imports: import unittest
  import tempfile
  import numpy
  from pyspark.sql import SparkSession
  from pyspark.testing.connectutils import should_test_connect, connect_requirement_message
label_desc: Use image node_id 3 for calling the EvaluationTestsMixin obj's underlying member method code with example usage: obj.test_multiclass_classifier_evaluator() without return types