EvaluatorAdapter

EvaluatorAdapter handles data evaluation, supporting comparative assessment of original, synthetic, and control datasets.

Class Architecture

classDiagram

    class EvaluatorAdapter {
        +config: dict
        +evaluator: Evaluator
        +__init__(config)
        +run() dict~str, DataFrame~
    }

    class Evaluator {
        +config: dict
        +method: str
        +create()
        +eval(data) dict~str, DataFrame~
    }

    class BaseEvaluator {
        <<abstract>>
        +evaluate() dict
    }

    class EvaluatorSDMetrics {
        +evaluate() dict
    }

    class EvaluatorAnonymeter {
        +evaluate() dict
    }

    EvaluatorAdapter ..> Evaluator : uses for evaluation
    Evaluator --> BaseEvaluator : creates
    BaseEvaluator <|-- EvaluatorSDMetrics
    BaseEvaluator <|-- EvaluatorAnonymeter

    %% Style definitions
    class EvaluatorAdapter {
        <<Main Class>>
    }
    style EvaluatorAdapter fill:#E6E6FA

    class Evaluator {
        <<Core Module>>
    }
    style Evaluator fill:#4169E1,color:#fff

    style BaseEvaluator fill:#9370DB,color:#fff
    style EvaluatorSDMetrics fill:#FFE4E1
    style EvaluatorAnonymeter fill:#FFE4E1

    note for EvaluatorAdapter "1. Fixed data sources: ori, syn, control\n2. Auto-aligns data types before evaluation\n3. Supports multiple evaluation methods\n4. Returns dict with evaluation results"

Legend:

  • Light purple box: EvaluatorAdapter main class
  • Blue box: Core evaluation modules
  • Purple box: Data alignment modules
  • Light pink box: Configuration classes
  • ..>: Dependency relationship
  • -->: Ownership relationship

Main Features

  • Unified data evaluation interface
  • Automatic data type alignment (using Schema)
  • Multi-dataset evaluation support (ori, syn, control)
  • Integration of various evaluation methods (Privacy, Utility, Diagnostic)
  • Fixed data source naming logic

Method Reference

__init__(config: dict)

Initialize an EvaluatorAdapter instance.

Parameters:

  • config: dict, required
    • Configuration parameters dictionary
    • Must include method key (evaluation method)
    • Supported evaluation methods: privacy, utility, diagnostic, etc.

run(input: dict)

Execute data evaluation, including automatic data type alignment.

Parameters:

  • input: dict, required
    • Input parameters dictionary
    • Contains data dictionary (ori, syn, control data)
    • Optional schema for data type alignment

Returns: No direct return value. Use get_result() to retrieve results.

set_input(status)

Set input data for the evaluator.

Parameters:

  • status: Status, required
    • System status object
    • Automatically extracts ori, syn, control data

Returns:

  • dict: Dictionary containing data required for evaluation

get_result()

Retrieve evaluation results.

Returns:

  • dict[str, pd.DataFrame]: Dictionary of evaluation results

Usage Example

from petsard.adapter import EvaluatorAdapter

# Initialize evaluator
adapter = EvaluatorAdapter({
    "method": "privacy",
    "privacy_method": ["membership_inference", "attribute_inference"]
})

# Set input data (usually handled automatically by Executor)
input_data = {
    "data": {
        "ori": original_df,
        "syn": synthetic_df,
        "control": control_df  # Optional
    },
    "schema": schema  # Optional, for data type alignment
}

# Execute evaluation
adapter.run(input_data)

# Get results
results = adapter.get_result()

Workflow

  1. Data Collection: Collect ori, syn, control data from Status
  2. Schema Retrieval: Priority order: Loader > Splitter > Preprocessor
  3. Data Type Alignment (when Schema is available)
    • Use SchemaMetadater.align() to align data types
    • Ensure consistent data types during evaluation
  4. Evaluation Execution: Call underlying Evaluator to perform evaluation

Data Source Logic

EvaluatorAdapter uses fixed data source naming:

  • ori (original data):

    • With Splitter: Takes Splitter’s train
    • Without Splitter: Takes Loader’s result
  • syn (synthetic data):

    • Takes previous module’s result (usually Synthesizer or Postprocessor)
  • control (control data):

    • Only exists when Splitter is present
    • Takes Splitter’s validation

Notes

  • This is an internal API, direct usage is not recommended
  • Use YAML configuration files and Executor instead
  • Data source naming is fixed, customization not supported
  • Automatically handles data type alignment for evaluation accuracy
  • Results are cached until next run() call