code: def test_set_feature_saving(tmpdir, pct_positive):
      backend = "local"
      input_features = [
          text_feature(encoder={"vocab_size": 3}),
      ]
  
      feature = set_feature(output_feature=True)
      output_features = [
          feature,
      ]
  
      data_csv_path = generate_data(
          input_features,
          output_features,
          os.path.join(tmpdir, "dataset.csv"),
          num_examples=100,
      )
      data_df = pd.read_csv(data_csv_path)
  
      config = {
          "input_features": input_features,
          "output_features": output_features,
          TRAINER: {"epochs": 1, BATCH_SIZE: 128},
      }
  
      patch_args = (
          "ludwig.features.set_feature.SetOutputFeature.logits",
          partial(
              random_set_logits,
              num_predict_samples=len(data_df),
              vocab_size=feature[DECODER]["vocab_size"]
              + 1,  # +1 for UNK
              pct_positive=pct_positive,
          ),
      )
  
      preds_df, ludwig_model = predict_with_backend(
          tmpdir, config, data_csv_path, backend, patch_args=patch_args
      )
      cols = set(preds_df.columns)
      assert f"{feature[NAME]}_predictions" in cols
      assert f"{feature[NAME]}_probabilities" in cols
  
      backend = ludwig_model.backend
      backend.df_engine.to_parquet(
          preds_df, os.path.join(tmpdir, "preds.parquet")
      )
  
file_path: ludwig/tests/integration_tests/test_postprocessing.py
imports: import os
  from functools import partial
  from unittest import mock
  import numpy
  import pandas
  import pytest
  import torch
  from ludwig.api import LudwigModel
  from ludwig.constants import BATCH_SIZE, DECODER, NAME, TRAINER
  from tests.integration_tests.utils import binary_feature, category_feature, generate_data, RAY_BACKEND_CONFIG, set_feature, text_feature
label_desc: Use image node_id 5 for calling a global function with example usage: test_set_feature_saving(tmpdir, pct_positive) without return types