首页 > 解决方案 > 如何创建一个应用 z-score 和交叉验证的 scikit-learn 管道?

问题描述

我试图在交叉验证的每一步标准化我的数据,我遇到了这个问题

按照建议,我去了 scikit-learn 文档并找到了这个例子:

from sklearn.pipeline import make_pipeline
clf = make_pipeline(preprocessing.StandardScaler(), svm.SVC(C=1))
cross_val_score(clf, X, y, cv=cv)

这看起来确实像我想要实现的目标,但是,我的意图是使用z-scorer而不是 StandardScaler,所以我尝试了这个:

clf = make_pipeline(stats.zscore(), DecisionTreeClassifier())

但我收到一个错误说:

TypeError: zscore() missing 1 required positional argument: 'a'

zscore() 的参数应该是什么?

标签: pythonscikit-learndata-sciencepipelinecross-validation

解决方案


欢迎来到堆栈溢出!在管道中有几种使用自定义功能的方法sklearn——我认为FunctionTransformer可以适合您的情况。

创建一个使用转换器zscore并将转换器传递给make_pipeline而不是直接调用的转换器zscore

我希望这有帮助!


推荐阅读