我在二进制文本分类任务中使用scikit-learn,我想确定每个'最好的功能。因此,基于它们,我的分类器可以识别正确的类..
任何指示我该怎么办?现在我正在使用CountVectorizer,我可以看到这两个类最常见的功能,但它没有告诉我哪个功能属于哪个类..也可能是最常见的并不总是最好的,因为它对于两个类都可以是通用的,这意味着将样本识别为类a或b并不是那么好。
这是我正在做的事情:
vec=CountVectorizer( tokenizer=tokens2,max_features=2000)
x=vec.fit_transform(X_train).toarray()
print x
print len(x[0]) # this should print the no. of feature which is 2000 in my case
print len(x) # this should print the no. of samples which is 980
我知道max_features将词汇量限制为仅针对两个班级的前K个功能,而我希望将其用于“每个'类。 我还在here中查看了 alvas 的答案,但似乎他的代码仅在分类器为“多项式”时才有效。 ..我已成功使用此分类器,但是,在将分类器更改为DecisionTreeClassifier时,会出现以下错误:
AttributeError: 'DecisionTreeClassifier' object has no attribute 'coef_'
当将分类器更改为SVC'线性'它会打印出我无法理解的不同结果。
0 (0, 22699) 2.2089966234e-05
(0, 17115) 0.00011044983117
(0, 17106) 2.2089966234e-05
(0, 17096) 2.2089966234e-05
(0, 17094) 2.2089966234e-05
(0, 17079) 2.2089966234e-05
(0, 17077) 2.2089966234e-05
(0, 17064) 2.2089966234e-05
(0, 17047) 2.2089966234e-05
(0, 10872) 0.00011044983117
(0, 10871) 8.83598649358e-05
.
.
1 (0, 22699) 2.2089966234e-05
(0, 17115) 0.00011044983117
(0, 17106) 2.2089966234e-05
(0, 17096) 2.2089966234e-05
(0, 17094) 2.2089966234e-05
(0, 17079) 2.2089966234e-05
(0, 17077) 2.2089966234e-05
(0, 17064) 2.2089966234e-05
(0, 17047) 2.2089966234e-05
(0, 10872) 0.00011044983117
(0, 10871) 8.83598649358e-05
(0, 10870) 0.000198809696106
(0, 10516) 0.00011044983117
答案 0 :(得分:0)
如果您选择DecisionTree或RandomForest,则可以访问feature_importances_属性,以查看最有助于预测的功能。
但这不是一个单一的全球贡献。