python - 我们是否需要两个单独的 StandardScaler 来处理功能和目标?

标签 python scikit-learn

所以我所理解的是 StandardScaler().fit_transform(X, y) 不会更改目标特征 (y)。同时,对于某些算法(例如基于权重或基于距离的算法)我们还需要对目标特征进行缩放。

我的问题是,我们是否必须实现两个 StandardScaler,一个用于功能,另一个用于目标功能?我想我们也可以在将训练数据集拆分为 Xy 之前使用它,但想知道我们如何在部署时使用它,因为我们没有 >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/

相关文章:

python - 为什么这个 CountVectorizer 输出与我的字数统计不同?

python-3.x - 使用分类数据集 : how to deal with different values (less number) in categorical data 进行 One-hot 编码

python-3.x - SVM 回归的调整参数

python - 赋值语句值

python - pip:从远程 git 存储库中提取更新

Python:为什么没有加载这个子模块?

python - 转换以零开头的数字

python - 在 HoverTool 中格式化

Python 到 .bat 的转换

python - 在多类分类问题中将 class_weights 参数与 Keras 一起使用时出错