import pointblank as pb
import polars as pl
temps = [20 + (k * 37 % 11 - 5) * 0.6 for k in range(300)]
for k in range(0, 300, 25):
temps[k] *= 10
for k in range(7, 300, 40):
temps[k] = None
readings = pl.DataFrame({"temp": temps})
def evaluate(train, *, seed, variant):
sample = train.drop_nulls().sample(fraction=1.0, with_replacement=True, seed=seed)
return abs(sample["temp"].mean() - 20)
validation = (
pb.Validate(data=readings)
.col_vals_not_null(columns="temp")
.col_vals_between(columns="temp", left=-10, right=45, na_pass=True)
.interrogate()
)
ablation = pb.Ablation(
validation, evaluate=evaluate, metric="error", higher_is_better=False
).drop_all()
ablation.plan()| Ablation plan | |
| 300 rows in the training table. Each version is evaluated 5 times, so the run will make 15 evaluations. | |
| Version | Removed |
|---|---|
| Baseline | |
Full table Nothing removed |
0 0% |
| Variants | |
All steps 1: Expect that all values in temp should not be Null.2: Expect that values in temp should be between -10 and 45. |
20 6.7% |
| Controls | |
20 random rows Rows removed at random, drawn anew for each repeat |
20 6.7% |