Я использую конвейер sklearn и хочу использовать для него gridsearch. Вот мой код:
steps = [('vectorize', CountVectorizer()),
('dim_red', TruncatedSVD(random_state=539)),
('clf', RandomForestClassifier(random_state=173))]
model = Pipeline(steps=steps)
grid_params = \
{'vectorize__min_df': range(1, 11),
'vectorize__max_df': [i/100 for i in range(90, 101)],
# 'dim_red__n_components': range(100, 501, 100),
'clf__min_samples_split': [pow(2, i) for i in range(1, 11)],
'clf__min_samples_leaf': [pow(2, i) for i in range(0, 11)]}
grid_search = RandomizedSearchCV(model, grid_params, scoring='accuracy',
verbose=10, n_iter=100, random_state=89)
Причина, по которой я закомментировал строку dim_red
в grid_params
, заключается в том, что параметры в шаге vectorize
могут изменять количество столбцов, выводимых на этом шаге. и TruncatedSVD
выдает ошибку, если вы передаете n_components
больше, чем число столбцов в X
(когда вы вызываете fit
).
Итак, мне было интересно: есть ли способ обойти это? Может быть, если n_components
слишком высоко, он может пропустить эту комбинацию параметров? Или что-нибудь еще?