我正在尝试通过Permutation Feature Importance
图生成特征重要性图。我试图确定通过不同方法返回的功能是否稳定。选择最佳功能。我们可以得到p-value
或某种可以表明该功能很重要的东西吗?如果我可以用PFI
做到这一点,我可能会更有信心,但结果似乎完全相反
这是我生成情节的代码
logreg=LogisticRegression(random_state=1) # i also tried with Random Forest
logreg.fit(X_train_std,y_train)
perm = PermutationImportance(logreg,random_state=1).fit(X_train_std,y_train)
eli5.show_weights(perm) #find the issue with plot below
问题
1]在其他方法中,我在顶部看到的功能并不重要(卡方,Xgboost功能重要性,Logistic回归统计模型摘要等),但在这里我在顶部看到它,这让我有些震惊。它是按降序还是升序排序?
2)我了解PFI
将值随机化以查看模型误差的减少。如果第一行(X18
)是一个重要功能,那么它与我的其他方法完全相反。我在这里犯错了吗?在这种情况下我应该查看/检查什么?还是仅在已选择的重要功能上应用PFI
?
3)如何使jupyter单元格显示到所有行。目前,它不显示剩余的35行,如下所示。我已经设置了pandas_set列宽,行数等
您能帮我吗?
使用属性top=
可以解决问题3,例如eli5.show_weights(perm,top=100)
https://eli5.readthedocs.io/en/latest/autodocs/eli5.html?highlight=top
对于问题1和2,我处于类似的情况,据我所知,不同的方法确实有不同的输出。每种方法都有其自己的标准。对于TREE方法,例如DecisionTree,xgboost,catboost,GBRT,等等,在构建一棵树的过程中,使用的功能越多,它变得越重要,但是其他方法则没有。