将上一个sklearn管道步骤中的对象属性作为参数传递给下一个步骤方法

2024-04-24 15:53:43 发布

您现在位置:Python中文网/ 问答频道 /正文

<太长了,读不下去了,有没有办法在流水线上的一个步骤调用“拟合< EM >和< EEM>转换数据”,以在管道的下一个步骤中用作超参数?你知道吗


我有一个Pipeline,其中包括用TfidfVectorizer拟合和转换文本数据,然后运行RandomForestClassifier。我想根据转换从文本中产生的特征数量,跨分类器中不同级别的GridSearchCV。你知道吗

#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,你可以看到这是如何改变输出到下一步的特性数量的。。。你知道吗


Tags: 数据文本df参数数量管道pipelinesetup