<p dir="auto">Apparently this works well in practice and it's pretty robust and can work on heterogeneous columns.<br>
The idea is to univariately sample from the training set. The obvious downside is that you have to store the training set.<br>
For few unique values we could store the counts, but that would require separately treating those with few unique values and standard continuous.<br>
Though for the continuous case we could also use binning to get around storing the training set.... hm...</p>
<p dir="auto">cc <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thomasjpfan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thomasjpfan">@thomasjpfan</a></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>