Я уверен, что это возможно, но я не смог понять это. Дайте набор обучающих данных, используя 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')
fit()
для обучающих данных и толькоtransform()
иpredict()
для тестовых данных разделения. - person Vivek Kumar   schedule 22.02.2019