我有一个关于在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中交叉验证QDA分类器
- 3. SKlearn中带有嵌套交叉验证的分类报告
- 4. 保存sklearn交叉验证对象
- 5. sklearn LassoCV如何执行交叉验证?
- 6. 交叉验证sklearn与给定的倍数分裂
- 7. SKLearn交叉验证错误 - 类型错误
- 8. 如何矢量化这段代码以便从文件加载交叉验证?
- 9. KFold交叉验证的R中KNN文本分类
- 10. mahout分类文本输入矢量化
- 11. 交叉口矢量
- 12. 交叉验证
- 13. Weka文件“交叉验证”
- 14. Python中的逻辑回归和交叉验证(使用sklearn)
- 15. 使用sklearn嵌套交叉验证获得最佳参数
- 16. 放在一起sklearn管道+嵌套交叉验证
- 17. sklearn:用户定义的时间序列数据交叉验证
- 18. 如何在KNN python sklearn中进行N交叉验证?
- 19. 做交叉验证
- 20. R交叉验证
- 21. JSR交叉提交验证
- 22. LDA交叉验证和变量选择
- 23. 10倍交叉验证
- 24. 交叉验证过程
- 25. K-折交叉验证
- 26. Keras和交叉验证
- 27. 交叉验证PCA + lm
- 28. 交叉表数据验证
- 29. 问题与交叉验证
- 30. SAS中的交叉验证
我认为这个问题在名为“交叉验证”的堆栈交换机器学习和统计站点上可能会有更好的接收。 – waTeim
这个问题似乎是脱离主题,因为它属于http://stats.stackexchange.com/ –
澄清:它不脱离主题,因为这个问题特别是在sklearn文本分类CV。数值数据不会出现这个问题,因为该特征集对于任何折叠都是固定的,但对于文本分类中的每一次折叠都是不同的。 – user3466018