sklearn:如何找出哪些特征对预测标签负责?

时间:2016-11-24 14:51:43

标签: python machine-learning scikit-learn

我正在使用 Python的sklearn 进行文本分类。使用的分类器是 MultinomialNB ,我用新闻纸文章提供体育,经济等类。

在训练模型之后,我使用了predictpredict_proba函数来测试我的模型以及一些选定的文本。但有时候确实会出现令人惊讶的结果,我想找出为什么,特别是我想知道哪些特征对结果有影响以及影响预测有多大影响。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:4)

我们最近发布了一个允许检查功能的包(https://github.com/TeamHG-Memex/eli5);它支持许多scikit-learn分类器,但不支持MultinomialNB(虽然这是在计划中)。如果您对使用其他分类器感到满意,请检查tutorial

如果您想要MultinomialNB,那么您可以等到它被支持,帮助,或使用像LIME这样的通用解释方法。 eli5有一个实验性的LIME implementation; LIME作者还提供了一个受欢迎的软件包:https://github.com/marcotcr/lime

很抱歉,这不是一个真正的答案,因为正确的答案是检查MultinomialNB系数并将它们映射回特征;虽然scikit-learn 0.18 MultinomialNB虽然存在一些问题(https://github.com/scikit-learn/scikit-learn/issues/2237),但应该小心谨慎(并为eli5:D做出贡献)。

答案 1 :(得分:0)

我相信这是一个老问题。但是LIME现在支持sklearn,您也可以使用Shapely解释任何模型

Link to the python notebook on LIME's github repo

Link to the SHAP library。 <<<-非常酷的一个。可与许多框架一起使用,并且被认为非常健壮!