Wie erhalten Sie die meisten informativen Funktionen für den scikit-learn Klassifikator für verschiedene Klassen?

8

NLTK-Paket bietet eine Methode show_most_informative_features() , um die wichtigsten Funktionen für beide Klassen zu finden, mit Ausgabe wie:

%Vor%

Wie in dieser Frage beantwortet Wie Sie am meisten bekommen informative Features für scikit-learn Klassifikatoren? , das kann auch in scikit-learn funktionieren. Für den binären Klassifikator gibt die Antwort in dieser Frage jedoch nur das beste Merkmal selbst aus.

Meine Frage ist also, wie kann ich die zugehörige Klasse identifizieren, wie im obigen Beispiel (outstanding ist in der POS-Klasse am informativsten und seagal ist in der negativen Klasse am informativsten)?

EDIT: Eigentlich möchte ich eine Liste der informativsten Wörter für jede Klasse. Wie kann ich das machen? Danke!

    
jdeng 17.11.2014, 15:44
quelle

2 Antworten

8

Im Fall der binären Klassifizierung scheint es so, als wäre das Koeffizientenfeld abgeflacht.

Versuchen wir, unsere Daten nur mit zwei Labels umzubenennen:

%Vor%

[out]:

%Vor%

Also machen wir ein paar Diagnosen:

%Vor%

[out]:

%Vor%

Scheint so, als würden die Features gezählt und dann, wenn sie vektorisiert wurden, abgeflacht, um Speicher zu sparen, also versuchen wir es:

%Vor%

[out]:

%Vor%

Nun sehen wir einige Muster ... Es scheint, als ob der höhere Koeffizient eine Klasse bevorzugt und der andere den anderen bevorzugt, also können Sie das einfach tun:

%Vor%

[out]:

%Vor%

Wenn Sie @larsmans Kommentar sorgfältig gelesen haben, gab er den Hinweis auf den Koeffizient der binären Klassen in Wie erhalten Sie die meisten informativen Funktionen für scikit-learn Klassifikatoren?

    
alvas 17.11.2014, 19:32
quelle
8

Grundsätzlich brauchen Sie:

%Vor%
  • classifier.classes_ greift auf den Index der Klassenbezeichnungen zu, die Sie im Klassifizierer

  • haben
  • vectorizer.get_feature_names() ist selbsterklärend

  • sorted(zip(classifier.coef_[labelid], feature_names))[-n:] ruft den Koeffizienten des Klassifikators für eine gegebene Klassenbezeichnung ab und sortiert ihn dann in aufsteigender Reihenfolge.

Ich werde ein einfaches Beispiel aus Ссылка

verwenden

Eingabedatei train.txt :

%Vor%

Code:

%Vor%

[out]:

%Vor%     
alvas 17.11.2014 16:45
quelle