Scikit learn 如何知道NLP模型中与特定类相关的单词?

Scikit learn 如何知道NLP模型中与特定类相关的单词?,scikit-learn,nlp,logistic-regression,tf-idf,multiclass-classification,Scikit Learn,Nlp,Logistic Regression,Tf Idf,Multiclass Classification,我使用逻辑回归算法和TF-IDF矢量器训练了“消费者投诉分类”的NLP模型。我想知道我的模型与特定类关联的单词。我在找这样的东西- 类1=[“帮助我的模型识别输入文本属于该类的单词列表”我想你需要的是与一个类相关的最重要的单词(或更好的标记)。因为通常所有标记都会以某种方式与所有类“关联”。因此,我将用以下方法回答您的问题: 假设由TfidfVectorizer生成的令牌(或单词)存储在X\u列中,标签位于y\u列中,您训练的模型如下: from sklearn.linear_model imp

我使用逻辑回归算法和TF-IDF矢量器训练了“消费者投诉分类”的NLP模型。我想知道我的模型与特定类关联的单词。我在找这样的东西-

类1=[“帮助我的模型识别输入文本属于该类的单词列表”

我想你需要的是与一个类相关的最重要的单词(或更好的标记)。因为通常所有标记都会以某种方式与所有类“关联”。因此,我将用以下方法回答您的问题:

假设由
TfidfVectorizer
生成的令牌(或单词)存储在
X\u列中,标签位于
y\u列中,您训练的模型如下:

from sklearn.linear_model import LogisticRegression
from sklearn.feature_extraction.text import TfidfVectorizer

vectorizer = TfidfVectorizer()
X_train = vectorizer.fit_transform(corpus)

clf = LogisticRegression()
clf.fit(X_train, y_train)
LogisticRegression
coef
属性对于多类问题具有形状(n_类,n_特征),包含为每个标记和每个类计算的系数。这意味着,通过根据类对其进行索引,可以访问用于该特定类的系数,例如,对于类
0
coef[1]
,对于类
1
,等等

只需将标记名与系数重新关联,并根据它们的值对它们进行排序。然后,您将获得每个类最重要的标记。获取类
0
的最重要标记的示例:

import pandas as pd

important_tokens = pd.DataFrame(
    data=clf.coef_[0],
    index=vectorizer.get_feature_names(),
    columns=['coefficient']
).sort_values(ascending=False)
important_tokens
中的标记现在根据其对类
0
的重要性进行排序,并且可以通过索引值轻松提取。例如,要获取n个最重要的特性作为列表:
important_tokens.head(n).index.values

如果您想要为其他类使用最重要的标记,只需根据需要替换
coef\uu
属性的索引即可