2016-12-30 264 views
-1

有沒有一種簡單的方法來查看每個課程的頂級功能?基於tfidf?Scikit學習分類

我正在使用KNeighbors classifer,SVC-Linear,MultinomialNB。

其次,我一直在尋找一種方法來查看尚未被正確分類的文檔?我可以查看混淆矩陣,但我希望看到具體文檔以查看哪些功能導致錯誤分類。

classifier = SVC(kernel='linear') 
counts = tfidf_vectorizer.fit_transform(data['text'].values).toarray() 
targets = data['class'].values 
classifier.fit(counts, targets) 
counts = tfidf_vectorizer.fit_transform(test['text'].values).toarray() 
predictions = classifier.predict(counts) 

編輯:我添加的代碼段,我只是創造了TFIDF矢量器,並用它來國家隊訓練的分類。

+0

請顯示一些代碼,以便我們可以評估是否有可能爲您提供您正在尋找的答案。 –

+0

http://stackoverflow.com/help/how-to-ask – 2016-12-30 20:21:18

回答

0

就像之前的評論所暗示的,一個更具體的問題會帶來更好的答案,但我總是使用這個包,所以我會盡力而且幫助。

I.確定sklearn中分類類的主要特徵取決於您使用的單個工具。例如,許多集成方法(如RandomForestClassifierGradientBoostingClassifer)都帶有.feature_importances_屬性,該屬性將根據其重要性評分每個要素。相反,大多數線性模型(如LogisticRegressionRidgeClassifier)具有正則化懲罰,懲罰係數的大小,這意味着係數大小有點反映了特徵的重要性(儘管您需要記住單個特徵的數值範圍),可以使用模型類的.coef_屬性進行訪問。

總之,幾乎所有的sklearn模型都有一些提取特徵重要性的方法,但是不同模型的方法不同。幸運的是,sklearn文檔是很棒的,所以我會閱讀你的具體模型,以確定你最好的方法。此外,請確保閱讀與您的問題類型相關的User Guide以及特定於模型的API。

二,沒有開箱即用的sklearn方法來提供錯誤分類的記錄,但是如果您使用的是熊貓DataFrame(您應該)爲模型提供數據,則可以使用像這樣的幾行代碼來完成。

import pandas as pd 
from sklearn.linear_model import RandomForestClassifier 

df = pd.DataFrame(data) 
x = df[[<list of feature columns>]] 
y = df[<target column>] 

mod = RandomForestClassifier() 
mod.fit(x.values, y.values) 

df['predict'] = mod.predict(x.values) 

incorrect = df[df['predict']!=df[<target column>]] 

結果incorrect DataFrame將只包含被錯誤分類的記錄。

希望這會有所幫助!

+0

這真的有幫助。 – someone