我正在使用Python的sklearn爲文本分類。所使用的分類是MultinomialNB和我一起報紙文章餵它用類,如體育,經濟等sklearn:如何找出哪些功能負責預測標籤?
訓練模型後,我用predict
和predict_proba
功能來測試我的模型一些選定的文本。但有時候會出現非常令人驚訝的結果,我想找出爲什麼意味着我特別想知道哪些特徵對結果有影響,以及影響了多少 - 理解預測。有沒有辦法做到這一點?
我正在使用Python的sklearn爲文本分類。所使用的分類是MultinomialNB和我一起報紙文章餵它用類,如體育,經濟等sklearn:如何找出哪些功能負責預測標籤?
訓練模型後,我用predict
和predict_proba
功能來測試我的模型一些選定的文本。但有時候會出現非常令人驚訝的結果,我想找出爲什麼意味着我特別想知道哪些特徵對結果有影響,以及影響了多少 - 理解預測。有沒有辦法做到這一點?
我們最近發佈了一個包(https://github.com/TeamHG-Memex/eli5),它允許檢查功能;它支持許多scikit-learn分類器,但不支持MultinomialNB(這在計劃中)。如果您確定使用另一個分類器,請檢查tutorial。
如果你想要MultinomialNB,那麼你可以等到支持,幫助,或使用通用的解釋方法,如LIME。 eli5有一個實驗LIME implementation;還有一個來自LIME作者的熱門軟件包:https://github.com/marcotcr/lime。
對不起,這不是一個真正的答案,因爲正確的答案是檢查MultinomialNB係數並將它們映射回特徵;因爲scikit-learn 0.18 MultinomialNB雖然有一些問題(https://github.com/scikit-learn/scikit-learn/issues/2237),所以它應該謹慎地做(併爲eli5:D做出貢獻)。
不回答這個問題,但真的有用 - 謝謝! –
謝謝你的(有幫助)答案。我已將分類符更改爲** LogisticRegression **並嘗試使用''eli5''的''show_prediction'' /''explain_predition''函數。第二個參數是''doc'',並且我傳遞了一個文本作爲參數。但是我得到''X每個樣本有1個特徵;期待1019'' ...在教程中,他們只傳遞文本,而不是特徵向量。那麼那裏有什麼?也許還有第二個問題:你知道權重的數學基礎嗎?他們如何計算? – ScientiaEtVeritas
@ScientiaEtVeritas將文本傳遞給eli5.show_prediction應該也可以,如果你還傳遞向量。至於Logistic迴歸,請參閱scikit學習有關該文檔:http://scikit-learn.org/stable/modules/linear_model.html#logistic-regression - 此頁面上有一些鏈接;維基百科也有一篇關於邏輯迴歸的文章(https://en.wikipedia.org/wiki/Logistic_regression)。我不確定我可以用一種有用的方法在一個簡短的評論中解釋它:) –
是否feature_log_prob_和coef_不是您要查找的內容?第一個是給定類的特徵的經驗對數概率P(x_i | y),而另一個將這些數轉換爲線性模型。 –
@LukaszTracewski請參閱https://github.com/scikit-learn/scikit-learn/issues/2237 –