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
,人们可以看到这如何将特征输出的数量更改为下一步......