我使用了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)发布于 2021-05-20 22:28:59
make_union只是联合多个数据集,而FunctionTransformer(copy)则复制所有列。因此,嵌套的make_union和FunctionTransformer(copy)为每个特性制作了几个副本。这似乎非常奇怪,除了使用ExtraTreesClassifier时,它将具有“自举”功能选择的效果。另请参阅Issue 581,以了解为什么首先会生成这些集合;基本上,添加副本在堆叠集成中很有用,而TPOT使用的遗传算法意味着它需要在探索此类集成之前首先生成这些副本。在这里,建议对遗传算法进行更多的迭代,以清除此类伪影。
在那之后,事情就很简单了,我想:你执行一个单变量特征选择,并拟合一个额外的随机树分类器。
https://stackoverflow.com/questions/67616170
复制相似问题