最佳答案
我想知道在 scikit-learn 中是否有处理 nan/null 值的分类器。我以为随机森林回归处理这一点,但我得到了一个错误,当我调用 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 库(比如 xgost)使用三叉树而不是二叉树就是为了达到这个目的: 2个子元素代表 yes/no decision,1个子元素代表丢失的 decision。Sklearn 是使用二叉树的一个 href = “ https://github.com/scikit-learn/blob/master/sklearn/tree/_ tree.pyx # L70-L74”rel = “ noReferrer”>