code: def test_missing_values_fill_with_mean(
      backend, csv_filename, tmpdir, ray_cluster_2cpu
  ):
      data_csv_path = os.path.join(tmpdir, csv_filename)
  
      kwargs = {
          PREPROCESSING: {"missing_value_strategy": FILL_WITH_MEAN}
      }
      input_features = [
          number_feature(**kwargs),
          binary_feature(),
          category_feature(encoder={"vocab_size": 3}),
      ]
      output_features = [binary_feature()]
      training_data_csv_path = generate_data(
          input_features, output_features, data_csv_path
      )
  
      config = {
          "input_features": input_features,
          "output_features": output_features,
          TRAINER: {"epochs": 2, BATCH_SIZE: 128},
      }
  
      # run preprocessing
      ludwig_model = LudwigModel(config, backend=backend)
      ludwig_model.preprocess(dataset=training_data_csv_path)
  
file_path: ludwig/tests/integration_tests/test_missing_value_strategy.py
imports: import os
  import random
  import numpy
  import pandas
  import pytest
  from ludwig.api import LudwigModel
  from ludwig.constants import BATCH_SIZE, COLUMN, DROP_ROW, FILL_WITH_MEAN, PREPROCESSING, PROC_COLUMN, TRAINER
  from tests.integration_tests.utils import binary_feature, category_feature, generate_data, LocalTestBackend, number_feature, read_csv_with_nan, sequence_feature, set_feature, text_feature, vector_feature
label_desc: Use image node_id 2 for calling a global function with example usage: test_missing_values_fill_with_mean(backend, csv_filename, tmpdir, ray_cluster_2cpu) without return types