scikit-learn中的DecisionTreeClassifier如何处理缺失值
时间: 2024-03-10 19:43:20 浏览: 24
scikit-learn中的DecisionTreeClassifier默认不支持缺失值。当数据中存在缺失值时,需要对数据进行预处理。常用的方法有以下两种:
1. 删除包含缺失值的样本或特征。缺点是可能会丢失有用的信息。
2. 填补缺失值。填补的方法有很多,比如用平均值、中位数、众数、随机森林等等。
对于第二种方法,scikit-learn中提供了Imputer类来进行缺失值填补。示例代码如下:
```python
from sklearn.tree import DecisionTreeClassifier
from sklearn.impute import SimpleImputer
import numpy as np
# 构造含有缺失值的数据
X = np.array([[1, 2, np.nan], [3, np.nan, 4], [5, 6, 7], [np.nan, 8, 9]])
y = np.array([0, 1, 0, 1])
# 使用 SimpleImputer 填补缺失值
imp = SimpleImputer(missing_values=np.nan, strategy='mean')
X = imp.fit_transform(X)
# 构建决策树模型
clf = DecisionTreeClassifier(random_state=0)
clf.fit(X, y)
```
上述代码中,我们首先构造了一个含有缺失值的数据集,并使用 SimpleImputer 类中的 mean 策略填补缺失值。然后,我们构建了一个决策树分类器并使用 fit() 方法拟合数据。注意,填补缺失值的步骤应该在拟合模型之前进行。