tpot生成pipeline的解释

Explanation of pipeline generated by tpot

我正在使用 tpotClassifier() 并将以下管道作为我的最佳管道。我附上了我得到的管道代码。有人可以解释管道流程和顺序吗?

import numpy as np
import pandas as pd
from sklearn.ensemble import ExtraTreesClassifier
from sklearn.feature_selection import SelectFwe, f_classif
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline, make_union
from tpot.builtins import StackingEstimator
from sklearn.preprocessing import FunctionTransformer
from copy import copy

tpot_data = pd.read_csv('PATH/TO/DATA/FILE', sep='COLUMN_SEPARATOR', dtype=np.float64)
features = tpot_data.drop('target', axis=1)
                         training_features, testing_features, training_target, testing_target = \
                         train_test_split(features, tpot_data['target'], random_state=None)

exported_pipeline = make_pipeline(
make_union(
    FunctionTransformer(copy),
    make_union(
        FunctionTransformer(copy),
        make_union(
            FunctionTransformer(copy),
            make_union(
                FunctionTransformer(copy),
                FunctionTransformer(copy)
            )
        )
    )
),
SelectFwe(score_func=f_classif, alpha=0.049),
ExtraTreesClassifier(bootstrap=False, criterion="entropy", max_features=1.0, min_samples_leaf=2, min_samples_split=5, n_estimators=100)
)

exported_pipeline.fit(training_features, training_target)
results = exported_pipeline.predict(testing_features)

make_union 只是联合多个数据集,FunctionTransformer(copy) 复制所有列。因此嵌套的 make_unionFunctionTransformer(copy) 为每个特征制作了多个副本。这看起来很奇怪,除了 ExtraTreesClassifier 它将具有“引导”功能选择的效果。另请参阅 Issue 581 以了解为什么首先生成这些内容的解释;基本上,添加副本在堆叠集成中很有用,而 TPOT 使用的遗传算法意味着它需要先生成这些副本,然后再探索此类集成。那里建议对遗传算法进行更多迭代可能会清除此类伪影。

之后事情就很简单了,我想:你执行单变量特征选择,并拟合一个额外的随机树分类器。