我试图弄清楚何时以及如何使用scikit-learn's StandardScaler 转换器,以及如何将其应用于目标变量。
我读过这篇文章,虽然公认的答案认为没有必要标准化目标向量,但其他答案表明它可能仍然是有益的。
所以让我们假设我想继续标准化目标向量。根据语法,实例的fit_transform方法StandardScaler可以采用特征矩阵 X 和目标向量 y 来解决监督学习问题。
但是,当我应用它时,该方法只返回一个数组。如果我尝试解压缩两个值,如下面的代码所示,我会收到“ValueError: too many values to unpack (expected 2)”错误:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled, y_scaled = scaler.fit_transform(X,y) # X is some feature array, y is the target vector
# This code will produce an error message
这与文档一致,文档指出返回值是单个输出数组X_new。
那么我的问题是:为什么有一个选项可以添加y到方法的参数中?它会改变 X 标准化的方式吗?
如果没有,我应该使用类似下面的代码吗?:
from sklearn.preprocessing import StandardScaler
scaler_X = StandardScaler()
scaler_y = StandardScaler()
X_scaled = scaler_X.fit_transform(X)
y_scaler = scaler_y.fit_transform(y)