Я уверен, что это возможно, но я не смог понять это.Дайте обучающий набор данных, используя TimeSeriesSplit
с 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')