tl;dr: есть ли способ вызвать .get_feature_names()
для подгонки и преобразованных данных из предыдущего шага конвейера для использования в качестве гиперпараметра на следующем этапе конвейера? ?
У меня есть Pipeline
, который включает подгонку и преобразование текстовых данных с помощью TfidfVectorizer
, а затем запускает RandomForestClassifier
. Я хочу GridSearchCV
по различным уровням max_features
в классификаторе, основываясь на количестве функций, полученных преобразованием из текста.
#setup pipeline
pipe = Pipeline([
('vect', TfidfVectorizer(max_df=.4,
min_df=3,
norm='l1',
stop_words='english',
use_idf=False)),
('rf', RandomForestClassifier(random_state=1,
criterion='entropy',
n_estimators=800))
])
#setup parameter grid
params = {
'rf__max_features': np.arange(1, len(vect.get_feature_names()),1)
}
Создание экземпляра возвращает следующую ошибку:
NameError: name 'vect' is not defined
Редактировать:
Это более актуально (и не объяснено в примере кода), если бы я модулировал параметр TfidfVectorizer
, такой как ngram_range
, можно было бы увидеть, как это может изменить количество функций, выводимых на следующий шаг...