2017-09-15 88 views
1

我正在使用SelectFromModel結合MultinomialNB在文本分類任務中進行特徵選擇。Python - SelectFromModel與樸素貝葉斯

SelectFromModel(estimator=MultinomialNB(alpha=1.0)) 

SelectFromModel通過計算確定從功能的重要性:

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

但是這是否正是我想的正好相反,因爲具有高頻率的特性將導致較低的絕對值?

已經有多個很好的回答問題來確定給定特定類別的特徵的重要性,但不是一般性的特徵重要性。

有沒有一種方法可以通過SelectFromModel與NB結合來確定特徵重要性,還是更適合於此任務的其他方法?

+1

請詳細說明一下。 「高頻特徵」是什麼意思?此外,這是一個分類任務,所以顯然特徵重要性將根據類。你能詳細解釋一下你想要的嗎? –

+0

我的意思是具有高頻率的特徵(在文檔中),例如使用CountVectorizer。 SelectFromModel基本上決定了分類任務中每個特徵的重要性,並選擇了應該像SVC一樣工作的精細分類器的「最重要的特徵」,但正如我試圖解釋的那樣,它似乎不適用於NB。 – Characeae

回答

0

有一種稱爲交叉驗證遞歸特徵消除的功能,也稱爲RFECV in sklearn。它試圖按照遞歸的重要性對特徵進行排序,並執行交叉驗證,以獲得指定評估程序的最佳特徵數量。你可以看看example here瞭解更多信息。

我不確定爲什麼selectFromModel不適用於NaiveBayes。我會更新這個答案,如果我發現任何與之相關的東西。與此同時,您可以檢查RFECV是否適合您的需求。