Parent
#92
What to build
Correct the config surface for KNN and MICE block-model overrides. Both strategies fit one shared model for the entire block — per-column dict overrides are semantically wrong. See ADR-0037.
Remove per_column_n_neighbors: dict[str, int]. Add knn_n_neighbors: Optional[int] — scalar, KNN block only. All KNN columns share one KNNImputer; a single value governs the entire block.
Add mice_max_iter: Optional[int] — scalar, MICE block only. All MICE columns share one IterativeImputer; a single value governs the entire block.
Retain per_column_max_iter: dict[str, int] for Regression only — each Regression column gets its own IterativeImputer, so per-column values are semantically valid. Update its docstring to say Regression only (remove the MICE mention).
Acceptance criteria
Blocked by
None — can start immediately
Parent
#92
What to build
Correct the config surface for KNN and MICE block-model overrides. Both strategies fit one shared model for the entire block — per-column dict overrides are semantically wrong. See ADR-0037.
Remove
per_column_n_neighbors: dict[str, int]. Addknn_n_neighbors: Optional[int]— scalar, KNN block only. All KNN columns share oneKNNImputer; a single value governs the entire block.Add
mice_max_iter: Optional[int]— scalar, MICE block only. All MICE columns share oneIterativeImputer; a single value governs the entire block.Retain
per_column_max_iter: dict[str, int]for Regression only — each Regression column gets its ownIterativeImputer, so per-column values are semantically valid. Update its docstring to say Regression only (remove the MICE mention).Acceptance criteria
per_column_n_neighborsfield removed fromNumericImputationConfigknn_n_neighbors: Optional[int] = Noneadded toNumericImputationConfigmice_max_iter: Optional[int] = Noneadded toNumericImputationConfigper_column_max_iterdocstring updated to say Regression columns onlyknn_n_neighborsandmice_max_iterappear into_dict()outputfrom_dict()round-trips both fields correctly;from_dict({})producesNonedefaultstest_imputation_config.py: existingper_column_n_neighborstests replaced withknn_n_neighborsequivalents;mice_max_iterdefault,to_dict, and round-trip tests addedNumericImputationConfigupdated for all three changed fields (per ADR-0034)Blocked by
None — can start immediately