0
我在二進制文本分類任務中使用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功能只有兩個班,我想爲「每個」類。 我也看過alvas回答於here,但似乎他的代碼只適用於分類器'MultinomialNB'..我已經成功地使用它與此分類器,但是,當將分類器更改爲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
- 只是想還提到,總沒有。的功能,我有16908,它可以得到更多取決於矢量的參數,當然..這會是一個問題?何時應該考慮應用隨機投影?
你能告訴我們你的步驟嗎? –
我編輯了我的問題並添加了它們。 – Ophilia