Scikit Learn Pipelin定制变压器

2024-06-08 05:07:02 发布

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

我使用Scikit学习管道对象是因为我要执行一系列任务(上采样、特征选择、分类)。我的上采样方法是自定义的,这意味着我必须为管道实现一个自定义的转换器。在

变压器必须有变换和拟合方法。当然,我只想向上采样训练数据,而不是测试数据。这是否意味着我只需要实现fit方法而不需要实现transform方法(对传递给fit方法的数据集进行上采样)?据我所知,转换方法适用于训练和测试集。。。在


Tags: 数据对象方法管道分类transformscikitfit
1条回答
网友
1楼 · 发布于 2024-06-08 05:07:02

scikit learn transformers无法更改样本数,这在API中不受支持-请参见http://scikit-learn.org/stable/modules/generated/sklearn.base.TransformerMixin.html#sklearn.base.TransformerMixin.fit_transform-请注意X、y和X的新维度。另外,请注意,它们只返回X,而不是y-这意味着如果更改X维,它将不再与y维匹配。在

一种方法是在管道外运行它——为培训生成新的样本并将它们放到流水线上,而不要生成新的样本用于测试。但它不起作用,例如用交叉法。在

为了使其适用于交叉验证和模型选择,您需要一个自定义管道类,该类支持更改n_样本的变压器。例如,可以在imbalanced-learn包中找到一个实现:请参见here。检查这个包-如果你需要上采样,那么也许你的上采样方法已经在不平衡学习中实现了。在

相关问题 更多 >

    热门问题