Python scikit 学习管道(无特征转换)

标签 python scikit-learn

我在我的数据集上运行不同的机器学习模型。我正在使用 sklearn 管道尝试对数字特征进行不同的转换,以评估一种转换是否能提供更好的结果。我使用的基本结构很简单:

from sklearn.pipeline import Pipeline
from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import StandardScalar

pipe = Pipeline(steps=[('stdscaler', StandardScaler()), ('clf', RandomForestClassifier())])

pipe.fit(X_train, y_train)

我正在尝试一系列转换,但我也想测试没有对数字特征集执行任何转换的场景(即按原样使用特征)。有没有办法将其包含在管道中?像这样的东西:

pipe = Pipeline(steps=[('do nothing', do_nothing()), ('clf', RandomForestClassifier())])

最佳答案

是的,你可以简单地做

pipe = Pipeline(steps=[('clf', RandomForestClassifier())])

此外,如果您有一些您几乎一直想要的自定义基础转换,并且它也有某些超参数或添加的功能,您也可以做类似的事情(有点蹩脚的例子,但只是为了想法..)

from sklearn.base import TransformerMixin

class Transform(TransformerMixin):
    def __init__(self, **kwargs):
        print(kwargs)
        self.hyperparam = kwargs

    def fit(self, X, y=None):
        return self

    def transform(self, X):
        if self.hyperparam["square"]:
            X = [x**2 for x in X]
        # elif "other_transform" in self.hyperparam:
            # pass_val = self.hyperparam['other_transform']
            # X = other_transform(X, pass_val)
        return X  # default to no transform if no hyperparameter is provided as argument of Transform()

pass_pipe = Pipeline(steps=[('do nothing', Transform()),
                            ('clf', RandomForestClassifier())])
square_pipe = Pipeline(steps=[('square', Transform(square=True)),
                              ('clf', RandomForestClassifier())])

以上是一种相互排斥的转换方式,即一个或另一个。相反,如果你有一堆转换并且你想按特定顺序应用它们,那么实现回调可能是正确的方法。查看如何在 sklearn、pytorch 或 fastai 等流行库中实现此类功能。

关于Python scikit 学习管道(无特征转换),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62922604/

相关文章:

python - 检查现有进程是否存在 - 如果存在,则与其通信,否则创建一个新进程

python - 有没有办法检索 sklearn.tree.DecisionTreeClassifier 生成的最终节点数?

python - [scikit 学习] : Anomaly Detection - Alternative for OneClassSVM

python - 使用 pip 安装 lxml 时遇到问题

python - 目标变量的字符串和数字的混合

python - 如何避免一个 Spark Streaming 窗口阻塞另一个窗口同时运行一些 native Python 代码

python - 将 sklearn 预测导出到 CSV 文件

python - 在python中将字符串转换为unicode

python - 将自定义数据传递给 request_futures 中的异常

python - cx_freeze 执行文件时出现导入错误