我有一个关于在sklearn中使用文本分类中的交叉验证的问题.在交叉验证之前对所有数据进行矢量化是有问题的,因为分类器将"看到"测试数据中出现的词汇.Weka过滤了分类器来解决这个问题.这个函数的sklearn等价物是什么?我的意思是对于每个折叠,特征集将是不同的,因为训练数据是不同的.
这个问题的scikit-learn解决方案是交叉验证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())])
Run Code Online (Sandbox Code Playgroud)
clf现在是一个复合估计器,它可以进行特征提取和SVM模型拟合.给出一个文档列表(即普通list的字符串Python )documents及其标签y,调用
>>> cross_val_score(clf, documents, y)
Run Code Online (Sandbox Code Playgroud)
将分别在每个折叠中进行特征提取,以便每个SVM仅知道其(k-1)折叠训练集的词汇.
| 归档时间: |
|
| 查看次数: |
1872 次 |
| 最近记录: |