假设我想使用 LinearSVC 对数据集执行 k-fold-cross-validation。我将如何对数据进行标准化?
我读过的最佳实践是在训练数据上建立标准化模型,然后将此模型应用于测试数据。
当使用一个简单的 train_test_split() 时,这很容易,因为我们可以这样做:
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y)
clf = svm.LinearSVC()
scalar = StandardScaler()
X_train = scalar.fit_transform(X_train)
X_test = scalar.transform(X_test)
clf.fit(X_train, y_train)
predicted = clf.predict(X_test)
在进行 k-fold-cross-validation 时如何标准化数据?问题来自这样一个事实,即每个数据点都将用于训练/测试,因此您无法在 cross_val_score() 之前标准化所有内容。对于每个交叉验证,您不需要不同的标准化吗?
文档没有提到函数内部发生的标准化。我是索尔吗?
编辑:这篇文章非常有帮助:Python - sklearn.pipeline.Pipeline 到底是什么?