scikit-learn是否有内置特征删除Transformer类?
问题:scikit-learn是否提供内置的特征丢弃Transformer?
我有一个包含大量特征的数据集,希望直接丢弃部分特征,并将该操作作为scikit-learn pipeline的第一步。这需要一个符合scikit-learn Transformer接口、实现fit和transform方法的对象。我自己写了一个Downsampler类来实现,但在Notebook里插入这段代码比较繁琐,想知道scikit-learn是否有具备相同功能的内置类?
自定义的Downsampler代码如下:
class Downsampler: """Downsamples input data according to the sklearn transform interface.""" def __init__(self, keep): """ keep should index the features *not* to be dropped. For instance, if only the middle two of four features are of interest, keep should be [1, 2] or [False, True, True, False]. """ self.keep_ = keep def fit(X, y=None): """Does nothing; provided for interface consistency.""" return self def transform(self, X, y=None): """Transform a data matrix of shape (n_samples, n_features) by dropping unwanted features.""" return np.copy(X[:, self.keep_])
类似的使用场景包括:将1秒分辨率的时间序列降采样到1分钟;忽略已知与预测目标无关的特征。
回答
scikit-learn没有完全和你写的Downsampler一一对应的内置类,但有两个更灵活的替代方案,不用自己写完整的Transformer类:
1. 使用FunctionTransformer(适配numpy数组/矩阵)
这个类可以直接把自定义的特征选择逻辑包装成符合Transformer接口的对象,代码更简洁:
from sklearn.preprocessing import FunctionTransformer import numpy as np # 示例:保留索引为1、2的特征 selector = FunctionTransformer(lambda X: X[:, [1, 2]], validate=True) # 如果用布尔掩码,比如[False, True, True, False] mask = [False, True, True, False] selector = FunctionTransformer(lambda X: X[:, mask], validate=True)
这个selector可以直接加入到Pipeline中使用,和你自己写的Downsampler功能完全一致。
2. 使用ColumnTransformer(适配pandas DataFrame)
如果你的数据是pandas DataFrame,想用列名来选择保留的特征,ColumnTransformer更直观:
from sklearn.compose import ColumnTransformer # 保留指定列,其余列直接丢弃 selector = ColumnTransformer( transformers=[('keep', 'passthrough', ['column_name1', 'column_name2'])], remainder='drop' )
至于你提到的时间序列降采样场景,scikit-learn没有专门的内置Transformer,但可以用FunctionTransformer包装pandas的resample方法实现:
import pandas as pd from sklearn.preprocessing import FunctionTransformer # 降采样到1分钟,以均值聚合(可根据需求替换为sum、max等) ts_downsampler = FunctionTransformer( lambda df: df.resample('1min').mean(), validate=False )
内容的提问来源于stack exchange,提问作者Frank Seidl
相关产品推荐
相关产品推荐

