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
methodkey (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
datadictionary (ori, syn, control data) - Optional
schemafor 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
- Data Collection: Collect ori, syn, control data from Status
- Schema Retrieval: Priority order: Loader > Splitter > Preprocessor
- Data Type Alignment (when Schema is available)
- Use SchemaMetadater.align() to align data types
- Ensure consistent data types during evaluation
- 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