所以我所理解的是 StandardScaler().fit_transform(X, y)
不会更改目标特征 (y
)。同时,对于某些算法(例如基于权重或基于距离的算法)我们还需要对目标特征进行缩放。
我的问题是,我们是否必须实现两个 StandardScaler
,一个用于功能,另一个用于目标功能?我想我们也可以在将训练数据集拆分为 X
和 y
之前使用它,但想知道我们如何在部署时使用它,因为我们没有 >y
.
# --- creating pipelines
transformer_x = make_pipeline(
SimpleImputer(strategy='constant'),
StandardScaler())
transformer_y = make_pipeline(
SimpleImputer(strategy='constant'),
StandardScaler())
# --- development
model.fit(transformer_x.fit_transform(X_train), transformer_y.fit_transform(y_train))
# ---
# sometime later in deployment
saved_model.predict(transformer_x.transform(new_data))
另外一个问题是,是否存在我们可能不需要对基于权重/距离的算法进行标准化的情况?
谢谢!
最佳答案
- 我们是否必须实现两个
StandardScaler
,一个用于功能,另一个用于目标功能?
一般来说,没有必要缩放目标特征。唯一可能有益的情况是在某些神经网络的情况下。检查这个link了解更多相关信息。
- 还有一个附带问题,是否存在我们可能不需要对基于重量/距离的算法进行标准化的情况?
一般而言,标准化总是有利于您的培训阶段。如果您需要对参数进行某种类型的解释,也许您应该避免使用它。再次,我在这里提供了一个有趣的link .
关于python - 我们是否需要两个单独的 StandardScaler 来处理功能和目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72801408/