Мне было интересно, есть ли классификаторы, которые обрабатывают значения nan/null в scikit-learn. Я думал, что случайный лесной регрессион справляется с этим, но я получил ошибку, когда я вызываю predict
.
X_train = np.array([[1, np.nan, 3],[np.nan, 5, 6]])
y_train = np.array([1, 2])
clf = RandomForestRegressor(X_train, y_train)
X_test = np.array([7, 8, np.nan])
y_pred = clf.predict(X_test) # Fails!
Могу ли я не вызывать прогноз с любым алгоритмом scikit-learn с отсутствующими значениями?
Редактировать. Теперь, когда я думаю об этом, это имеет смысл. Это не проблема во время обучения, но когда вы прогнозируете, как вы введете ветвь, когда переменная равна нулю? возможно, вы могли бы просто разделить оба пути и усреднить результат? Кажется, что k-NN должен работать нормально, пока функция расстояния игнорирует нули.
Изменить 2 (более старый и более мудрый). Некоторые библиотеки gbm (например, xgboost) используют для этого цельное дерево вместо двоичного дерева: 2 ребенка для решения "да/нет" и 1 ребенок для отсутствующего решения. sklearn использует двоичное дерево