在 sklearn 管道中使用标准化
Using Standardization in sklearn pipeline
我正在使用 Standardscaler 对我的数据集进行归一化,也就是说,我通过减去平均值并除以 Std 将每个特征转换为 z 分数。
我想在 sklearn 的管道中使用 Standardscaler,我想知道如何将转换应用到 X_test。也就是说,在下面的代码中,当我 运行 pipeline.predict(X_test)
时,我的理解是 StandardScaler
和 SVC()
是 X_test 上的 运行 ,但是 Standardscaler
究竟使用什么作为均值和标准差?来自 X_Train
的那些还是仅针对 X_test
计算的?例如,如果 X_test
仅包含 2 个变量,那么归一化看起来与我将 X_train
和 X_test
一起归一化会有很大不同,对吗?
steps = [('scaler', StandardScaler()),
('model',SVC())]
pipeline = Pipeline(steps)
pipeline.fit(X_train,y_train)
y_pred = pipeline.predict(X_test)
Sklearn 的 pipeline
将在调用 pipeline.fit()
时应用 transformer.fit_transform()
,在调用 pipeline.predict()
时应用 transformer.transform()
。因此,对于您的情况,StandardScaler
将适合 X_train
,然后 mean 和 stdev 来自 X_train
将用于缩放 X_test
.
X_train
的变换看起来确实与 X_train
和 X_test
的变换不同。差异的程度将取决于 X_train
和 X_test
组合之间分布的差异程度。但是,如果从相同的原始数据集随机分区,并且大小合理,X_train
和 X_test
的分布可能相似。
无论如何,重要的是要将 X_test
视为样本外,以便它成为(希望如此)看不见数据的可靠指标。既然你不知道看不见的数据的分布,你应该假装你不知道 X_test
的分布,包括 mean 和 stdev.
我正在使用 Standardscaler 对我的数据集进行归一化,也就是说,我通过减去平均值并除以 Std 将每个特征转换为 z 分数。
我想在 sklearn 的管道中使用 Standardscaler,我想知道如何将转换应用到 X_test。也就是说,在下面的代码中,当我 运行 pipeline.predict(X_test)
时,我的理解是 StandardScaler
和 SVC()
是 X_test 上的 运行 ,但是 Standardscaler
究竟使用什么作为均值和标准差?来自 X_Train
的那些还是仅针对 X_test
计算的?例如,如果 X_test
仅包含 2 个变量,那么归一化看起来与我将 X_train
和 X_test
一起归一化会有很大不同,对吗?
steps = [('scaler', StandardScaler()),
('model',SVC())]
pipeline = Pipeline(steps)
pipeline.fit(X_train,y_train)
y_pred = pipeline.predict(X_test)
Sklearn 的 pipeline
将在调用 pipeline.fit()
时应用 transformer.fit_transform()
,在调用 pipeline.predict()
时应用 transformer.transform()
。因此,对于您的情况,StandardScaler
将适合 X_train
,然后 mean 和 stdev 来自 X_train
将用于缩放 X_test
.
X_train
的变换看起来确实与 X_train
和 X_test
的变换不同。差异的程度将取决于 X_train
和 X_test
组合之间分布的差异程度。但是,如果从相同的原始数据集随机分区,并且大小合理,X_train
和 X_test
的分布可能相似。
无论如何,重要的是要将 X_test
视为样本外,以便它成为(希望如此)看不见数据的可靠指标。既然你不知道看不见的数据的分布,你应该假装你不知道 X_test
的分布,包括 mean 和 stdev.