我确定这是可能的,但我无法弄清楚。TimeSeriesSplit
使用with给出一个训练数据集num_split=5
,拆分如下所示:
[0] : [1]
[0 1] : [2]
[0 1 2] : [3]
[0 1 2 3] : [4]
[0 1 2 3 4] : [5]
问题在于前几遍,TfidfVectorizer
正在使用名义数量的词汇/特征,我想在拆分之前在整个训练集上运行它,以便所有拆分的特征大小保持相同。
然而,除此之外,有没有人知道在使用TimeSeriesSplit
时只通过系列中的最后两个拆分的方法?因此,而不是所有 5 个拆分,GridSearchCV
只使用这两个:
[0 1 2 3] : [4]
[0 1 2 3 4] : [5]
这将允许更好的矢量化拟合,即使它在通过之间不会相同 - 至少它在验证之前有更大的部分可以使用。
谢谢。
编辑:
我使用的管道本质上是 TfidfVectorizer,然后是分类器。但是对数据和特征进行一些检查,看起来数据集在被馈送到 TfidVectorizer() 之前被分割了。这是粗略的笔触:
tscv = TimeSeriesSplit(n_splits=5)
pipe = Pipeline([('tfidf', TfidfVectorizer(), 'rfc', RandomForestClassifier()])
grid = GridSearchCV(pipe, params, cv=tscv, scoring='roc_auc')