mirror of
https://github.com/semantica-agi/semantica.git
synced 2026-08-29 04:26:20 +00:00
39 lines
1.0 KiB
Python
39 lines
1.0 KiB
Python
import pytest
|
|
|
|
from semantica.normalize.data_cleaner import DataCleaner
|
|
|
|
|
|
@pytest.mark.parametrize("rows", [100, 500])
|
|
def test_duplication_detection_scaling(benchmark, generate_dataset, rows):
|
|
"""
|
|
Benchmarks duplicate detection scaling.
|
|
"""
|
|
|
|
cleaner = DataCleaner()
|
|
dataset = generate_dataset(rows=rows, duplicate_rate=0.2)
|
|
|
|
def run():
|
|
return cleaner.detect_duplicates(dataset, key_fields=["name", "email"])
|
|
|
|
benchmark.pedantic(run, iterations=1, rounds=5)
|
|
|
|
|
|
def test_missing_value_imputation(benchmark, generate_dataset):
|
|
"""
|
|
Benchmarks statistical imputation.
|
|
"""
|
|
cleaner = DataCleaner()
|
|
|
|
def setup_broken_dataset():
|
|
dataset = generate_dataset(rows=5000)
|
|
for row in dataset:
|
|
if row["id"] % 5 == 0:
|
|
row["value"] = None
|
|
|
|
return (dataset,), {}
|
|
|
|
def run(data):
|
|
return cleaner.handle_missing_values(data, strategy="impute", method="mean")
|
|
|
|
benchmark.pedantic(target=run, setup=setup_broken_dataset, iterations=1, rounds=10)
|