如何在 sklearn 中使用 SelectFromModel 找到 class 的积极信息特征

How to use SelectFromModel in sklearn to find the positively informative features for a class

我想我知道直到最近人们还在 python 的机器学习库 sklearn 中使用线性模型的属性 coef_ 到 extract the most informative features。现在,用户将改为指向 SelectFromModel。 SelectFromModel 允许根据阈值减少特征。所以像下面的代码这样的东西将特征减少到那些重要性 > 0.5 的特征。我现在的问题是:有什么方法可以确定某个特征对 class 是正面歧视还是负面歧视?

我的数据在一个名为 data 的 pandas 数据框中,第一列是文本文件的文件名列表,第二列是标签。

count_vect = CountVectorizer(input="filename", analyzer="word")
X_train_counts = count_vect.fit_transform(data["filenames"])
print(X_train_counts.shape)
tf_transformer = TfidfTransformer(use_idf=True)
traindata = tf_transformer.fit_transform(X_train_counts)
print(traindata.shape) #report size of the training data
clf = LogisticRegression()
model = SelectFromModel(clf, threshold=0.5)
X_transform = model.fit_transform(traindata, data["labels"])
print("reduced features: ", X_transform.shape)
#get the names of all features
words = np.array(count_vect.get_feature_names())
#get the names of the important features using the boolean index from model 
print(words[model.get_support()])

据我所知,您需要回到 .coef_ 方法并查看哪些系数是负的或正的。负系数明显降低 class 发生的几率(负相关),而正系数增加 class 发生的几率(正相关)。

不过这个方法不会给你意义,只会给你方向。您将需要 SelectFromModel 方法来提取它。