Parent
#91
What to build
Replace the hardcoded max_iter=10 and default tol in the MICE IterativeImputer with values computed from a seven-signal framework, aggregated conservatively across all MICE columns. Add post-fit convergence monitoring: if n_iter_ == max_iter, append a convergence warning to every MICE column's ColumnImputationRecord.signals.
The seven signals and their MICE-specific aggregation rules:
NonlinearityTag — most complex tag across MICE columns; ComplexNonlinear adds to base max_iter
- Feature matrix missingness fraction — fraction of NaN cells across the full MICE matrix
- R² strength — minimum R²_linear across MICE columns (worst-case convergence speed); high minimum R² reduces
max_iter
- Inter-feature correlation — maximum pairwise Pearson
|r| among MICE columns (from CorrelationProfiler); high correlation increases max_iter
- Complete row fraction — fraction of rows with no NaN across all MICE columns; low fraction increases
max_iter
- Scale-relative
tol — tol = min_iqr * scaling_factor where min_iqr is the minimum IQR across MICE columns
ComplexNonlinear tol tightening — tighter tol when most-complex tag is ComplexNonlinear
Implement as _compute_mice_max_iter and _compute_mice_tol helpers, parallel to the existing _compute_max_iter / _compute_tol used by the Regression strategy.
Acceptance criteria
Blocked by
Parent
#91
What to build
Replace the hardcoded
max_iter=10and defaulttolin the MICEIterativeImputerwith values computed from a seven-signal framework, aggregated conservatively across all MICE columns. Add post-fit convergence monitoring: ifn_iter_ == max_iter, append a convergence warning to every MICE column'sColumnImputationRecord.signals.The seven signals and their MICE-specific aggregation rules:
NonlinearityTag— most complex tag across MICE columns;ComplexNonlinearadds to basemax_itermax_iter|r|among MICE columns (fromCorrelationProfiler); high correlation increasesmax_itermax_itertol—tol = min_iqr * scaling_factorwheremin_iqris the minimum IQR across MICE columnsComplexNonlineartol tightening — tightertolwhen most-complex tag isComplexNonlinearImplement as
_compute_mice_max_iterand_compute_mice_tolhelpers, parallel to the existing_compute_max_iter/_compute_tolused by the Regression strategy.Acceptance criteria
IterativeImputerfor the MICE block is constructed with dynamically computedmax_iterandtol(not hardcoded10/ sklearn default)_compute_mice_max_iterapplies all seven signals with MICE-specific aggregation (min R², max inter-column |r|, full-matrix missingness)_compute_mice_tolusesmin_iqracross MICE columns, with tighter scaling forComplexNonlinearn_iter_ == max_iter, a convergence warning is appended to every MICE column's signals (not only the first or last)max_iterbefore convergence produces a convergence warning signal on all MICE column records_compute_mice_max_iterand_compute_mice_tolBlocked by