【问题标题】:Python - SelectFromModel with Naive-BayesPython - 带有朴素贝叶斯的 SelectFromModel
【发布时间】:2018-02-24 12:02:20
【问题描述】:

我在文本分类任务中使用SelectFromModelMultinomialNB 进行特征选择。

SelectFromModel(estimator=MultinomialNB(alpha=1.0))

SelectFromModel 通过计算确定特征的重要性:

importances = np.linalg.norm(estimator.coef_, axis=0,ord=norm_order)

但这不是和我想要的完全相反吗,因为高频率的特征会导致低绝对值?

对于确定给定特定类别的特征的重要性,已经有多个得到很好回答的问题,但对于一般特征重要性而言,则不是。

有没有办法通过 SelectFromModel 结合 NB 来确定特征重要性,还是其他方法更适合这项任务?

【问题讨论】:

  • 请详细说明一下。您所说的“高频饮食”是什么意思?此外,这是一项分类任务,因此显然特征重要性将根据类别而定。你能详细解释一下你想要什么吗?
  • 我指的是具有高词频的特征(在文档中),例如使用 CountVectorizer。 SelectFromModel 基本上确定了分类任务中每个特征的重要性,并选择应该适用于 SVC 等分类器的“最重要特征”,但正如我试图解释的那样,它似乎不适用于 NB。

标签: python-2.7 machine-learning scikit-learn naivebayes


【解决方案1】:

有一个称为交叉验证的递归特征消除功能,也称为RFECV in sklearn。它尝试根据特征的重要性递归地对特征进行排名,并执行交叉验证以获得指定估计器的最佳特征数量。您可以查看example here 了解更多信息。

我不确定为什么 selectFromModel 不能与 NaiveBayes 一起使用。如果我发现任何相关内容,我将更新此答案。同时,您可以检查 RFECV 是否适合您的需求。

【讨论】:

    猜你喜欢
    • 2013-11-24
    • 2021-07-20
    • 2021-07-15
    • 2018-12-15
    • 2012-02-21
    • 2011-12-28
    • 2017-02-18
    • 2014-01-13
    • 2017-03-17
    相关资源
    最近更新 更多