2017-09-15 3 views
1

J'utilise SelectFromModel en combinaison avec MultinomialNB pour la sélection de fonction dans une tâche de classification texte.Python - SelectFromModel avec Naive-Bayes

SelectFromModel(estimator=MultinomialNB(alpha=1.0)) 

SelectFromModel détermine l'importance de caractéristiques en calculant:

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

Mais est-ce pas exactement le contraire de ce que je veux, parce que les caractéristiques avec une fréquence élevée se traduira par de faibles valeurs absolues?

Il y a déjà plusieurs questions bien répondues pour déterminer l'importance des caractéristiques d'une classe spécifique, mais pas pour l'importance des caractéristiques en général.

Existe-t-il un moyen de déterminer l'importance de la caractéristique avec SelectFromModel en combinaison avec NB ou d'autres approches mieux adaptées à cette tâche?

+1

S'il vous plaît élaborer un peu plus. Que voulez-vous dire par "manger avec une fréquence élevée"? En outre, il s'agit d'une tâche de classification, de sorte que l'importance des fonctions sera évidemment fonction des classes. Pouvez-vous expliquer en détail ce que vous voulez? –

+0

Je veux dire des fonctionnalités à haute fréquence (dans un document), par exemple en utilisant un CountVectorizer. SelectFromModel détermine fondamentalement l'importance pour chaque caractéristique dans une tâche de classification, et sélectionne les "caractéristiques les plus importantes" qui devraient fonctionner de fins classificateurs comme SVC, mais comme j'ai essayé de l'expliquer, cela ne semble pas fonctionner pour NB. – Characeae

Répondre

0

Il existe une fonction connue sous le nom d'élimination de caractéristique récursive avec validation croisée, également connue sous le nom RFECV in sklearn. Il essaie de classer les caractéristiques en fonction de leur importance de manière récursive et effectue une validation croisée pour obtenir le meilleur nombre de caractéristiques avec l'estimateur spécifié. Vous pouvez regarder le example here pour plus d'informations.

Je ne sais pas pourquoi selectFromModel ne fonctionne pas avec NaiveBayes. Je mettrai à jour cette réponse si je trouve quelque chose qui s'y rapporte. En attendant, vous pouvez vérifier que RFECV répond à vos besoins.