# Are there ML Libs in Python robust to missing data?

So I was searching on how to handle missing data and came across this post from Machine Learning Mastery.

This article states that some algorithms can be made robust to missing data, such as Naive Bayes and KNN.

Not all algorithms fail when there is missing data.
There are algorithms that can be made robust to missing data, such as k-Nearest Neighbors that can ignore a column from a distance measure when a value is missing. Naive Bayes can also support missing values when making a prediction.

But then it says that sklearn implementations are not robust to missing data.

Sadly, the scikit-learn implementations of Naive Bayes, decision trees, and k-Nearest Neighbors are not robust to missing values.

Are there ML libs (preferably in Python, but could also be in other languages) that these algorithms are robust to missing data?

In general Weka can handle missing values, which are marked as ? in the .arff format. However this doesn't mean that every learning algorithm in Weka has a specific mechanism to deal with them, and unfortunately the documentation is a bit poor about this point. So as far as I'm aware, one has to study the source code and/or do some experiments in order to find out exactly what a particular class does with missing values.

Weka is in Java but there is a wrapper for Python.

As far as I know, the only algorithm that supports NaN's in scikit-learn / Python is the HistGradientBoostingClassifier this might be used by setting:

# explicitly require this experimental feature
from sklearn.experimental import enable_hist_gradient_boosting  # noqa
# now you can import normally from ensemble