<p dir="auto">SimpleImputer assigns all missing values in a column the same value based on training statistics. We should consider adding an alternative imputer (<code class="notranslate">RandomImputer</code>? <code class="notranslate">SamplingImputer</code>?) which samples imputation values from the values seen for the same feature in training.</p>
<p dir="auto">The purpose would be to provide an unbiased, stochastic, univariate imputer. The imputer would replace missing values by values sampled uniformly at random from the non-missing values of the sample column.</p>
<p dir="auto">This would require to add additional <code class="notranslate">random_state</code> constructor parameter to the class.</p>
<p dir="auto">As for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="329773579" data-permission-text="Title is private" data-url="https://github.com/scikit-learn/scikit-learn/issues/11208" data-hovercard-type="issue" data-hovercard-url="/scikit-learn/scikit-learn/issues/11208/hovercard" href="https://github.com/scikit-learn/scikit-learn/issues/11208">#11208</a> this strategy should work both on numerical and non-numerical dtypes.</p>