我有一個關於在sklearn文本分類中使用交叉驗證的問題。在交叉驗證之前矢量化所有數據是有問題的,因爲分類器會「看到」測試數據中出現的詞彙。 Weka已經過濾分類器來解決這個問題。什麼是這個函數sklearn等價物?我的意思是對於每一次摺疊,特徵集都會有所不同,因爲訓練數據是不同的。sklearn:矢量化交叉驗證文本分類
3
A
回答
4
的scikit學習解決這個問題是交叉驗證估計的Pipeline
,例如:
>>> from sklearn.cross_validation import cross_val_score
>>> from sklearn.feature_extraction.text import TfidfVectorizer
>>> from sklearn.pipeline import Pipeline
>>> from sklearn.svm import LinearSVC
>>> clf = Pipeline([('vect', TfidfVectorizer()), ('svm', LinearSVC())])
clf
是現在做的特徵提取和SVM模型擬合的複合估計。鑑於文件列表(即一個普通的Python字符串的list
)documents
及其標籤y
,呼籲
>>> cross_val_score(clf, documents, y)
會做特徵提取每個單獨摺疊,使每一個支持向量機只知道它(k的詞彙-1)摺疊訓練集。
+0
非常感謝!我測試了您的解決方案,與無管道方法相比,它報告的準確性數字不同。是否有任何方法可以打印出每個關鍵詞的詞彙大小,以便驗證?我打印出「clf」的特徵集大小,並且數字與我從無管線方法中獲得的數量相同。 – user3466018
+0
@ user3466018不是開箱即用,但是您可以實現一個無操作的轉換器,它可以打印'X.shape [1]'並將其堆疊到管道中。 (或者實現一個自定義記錄器,或者破解向量代碼來報告這個。) –
相關問題
- 1. SKLearn交叉驗證:
- 2. SKlearn中帶有嵌套交叉驗證的分類報告
- 3. 在sklearn中交叉驗證QDA分類器
- 4. 保存sklearn交叉驗證對象
- 5. sklearn使用GridSearch進行交叉驗證
- 6. sklearn LassoCV如何執行交叉驗證?
- 7. 交叉驗證sklearn與給定的倍數分裂
- 8. SKLearn交叉驗證錯誤 - 類型錯誤
- 9. 如何矢量化這段代碼以便從文件加載交叉驗證?
- 10. KFold交叉驗證的R中KNN文本分類
- 11. mahout分類文本輸入矢量化
- 12. 交叉口矢量
- 13. 交叉驗證
- 14. Weka文件「交叉驗證」
- 15. 使用scikit-learn對文本文檔進行分類時的交叉驗證
- 16. 如何在KNN python sklearn中進行N交叉驗證?
- 17. sklearn:用戶定義的時間序列數據交叉驗證
- 18. 放在一起sklearn管道+嵌套交叉驗證
- 19. 使用sklearn嵌套交叉驗證獲得最佳參數
- 20. Python中的邏輯迴歸和交叉驗證(使用sklearn)
- 21. GBM交叉驗證
- 22. 交叉驗證與
- 23. 做交叉驗證
- 24. R交叉驗證
- 25. JSR交叉提交驗證
- 26. LDA交叉驗證和變量選擇
- 27. ROC曲線交叉驗證
- 28. LightGBM中的交叉驗證
- 29. K-折交叉驗證
- 30. 交叉表數據驗證
我認爲這個問題在名爲「交叉驗證」的堆棧交換機器學習和統計站點上可能會有更好的接收。 – waTeim
這個問題似乎是脫離主題,因爲它屬於http://stats.stackexchange.com/ –
澄清:它不脫離主題,因爲這個問題特別是在sklearn文本分類CV。數值數據不會出現這個問題,因爲該特徵集對於任何摺疊都是固定的,但對於文本分類中的每一次摺疊都是不同的。 – user3466018