如何创建一个应用 z-score 和交叉验证的 scikit-learn 管道?

Posted

技术标签:

【中文标题】如何创建一个应用 z-score 和交叉验证的 scikit-learn 管道?【英文标题】:How to create a scikit-learn pipeline that applies z-score and cross-validation? 【发布时间】:2020-09-04 07:43:11 【问题描述】:

我正在尝试在交叉验证的每个步骤中标准化我的数据,我遇到了这个question

按照建议,我查看了 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() 的参数应该是什么?

【问题讨论】:

【参考方案1】:

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

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

我希望这会有所帮助!

【讨论】:

这正是我想要的,非常感谢!

以上是关于如何创建一个应用 z-score 和交叉验证的 scikit-learn 管道?的主要内容,如果未能解决你的问题,请参考以下文章

如何对数据应用交叉验证?

如何进行变量筛选和特征选择(三)?交叉验证

应用分层10折交叉验证时如何在python中获取所有混淆矩阵的聚合

sklearn中的交叉验证+决策树

交叉验证后如何获取支持向量数

如何在 scikit-learn 中计算正确的交叉验证分数?