【发布时间】:2018-08-15 09:18:10
【问题描述】:
我已经用大型数据集 [400000,93] 对 XGBClassifier 进行了实验, 数据包含很多 NaN 值,我使用了 sklearn 包中的插补
imputer = Imputer()
imputed_x = imputer.fit_transform(data)
data = imputed_x
但特征重要值看起来像
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
由于这个原因,结果-
precision: 1.0
recall: 1.0
accuracy: 1.0
traning_accuracy: 1.0
为什么模型不能拟合数据。
示例代码片段
model_xboost =XGBClassifier(max_depth=5,
n_estimators=100,)
#train
model_xboost.fit(train_data,train_labels)
print(model_xboost.feature_importances_)
【问题讨论】:
-
您可以看到您的其中一项功能决定了您的模型的整个决策过程。因此,整个 feature_importance 列表中只有一个特征的值为 1,其余为 0。尝试删除此特征并查看模型的行为。似乎此特定功能过度适合您的模型
-
非常感谢@Flika205...
-
我很想知道它是否真的解决了您的问题,以及您的模型在删除此功能后的表现如何
-
也许该特征是您不小心放入 X 中的类标签,或者可能是与类相对应的东西,实际上是在已知类之后计算的。你不应该使用这些功能。
-
@Flika205 ,去除高相关特征后,模型给出了一个特征列表及其重要性
标签: python pandas machine-learning statistics