【问题标题】:Scikit-Learn: How to use Transformation of Matrix X to transform Target Variables YScikit-Learn:如何使用矩阵 X 的变换来变换目标变量 Y
【发布时间】:2017-10-28 07:05:26
【问题描述】:

我正在研究一个回归问题,我的特征在矩阵 X 中,目标值在 Y 中。

我想缩放输入。我正在使用sklearnMinMaxScaler

# scale data to 0-1
scaler = MinMaxScaler(feature_range=(0, 1))
X = scaler.fit_transform(X)

我的理解是,真正的标签向量 Y 现在应该相应地缩放。如何使用 scaler 对象来做到这一点?从docs,我可以将真实标签传递给 fit_transform 方法,但这似乎只是为了“管道兼容性” - 即该方法无视Y,只返回转换后的X。

谢谢!

【问题讨论】:

    标签: python machine-learning scikit-learn normalization


    【解决方案1】:

    您无法使用该缩放器缩放目标变量Y

    因为MinMaxScaler

    通过将每个特征缩放到给定范围来转换特征。

    它不会转换目标变量。或者更准确地说,既然你已经将它安装在特征上,那么你只能将它应用在特征上。

    再次需要缩放器的情况是,当您尝试将模型应用于测试数据以进行预测时,您需要使用相同的缩放器来转换测试数据的特征也因此结果将是一致的。

    【讨论】:

    • 感谢回复,这个我明白了,我想我应该提到的是我在做时间序列预测,所以我的目标变量是一个“特征”,就像矩阵 X。那么在这种情况下,最好的做法是在我划分为 X、y 之前应用缩放?这是我最初尝试的,但有点麻烦所以我认为必须有一个标量可以在安装到二维数组后应用于一维数组...
    • 如果您需要缩放y,您将不得不制作另一个缩放器。我们称之为scaler_target。分别缩放Xy,因为稍后您可能会在测试数据集上再次需要它们。因此,从特征拟合的缩放器应该应用于特征,从目标变量拟合的 scaler_target 应该应用于目标变量。希望这很清楚。
    • 单独缩放它们有点违背我的直觉,但我会这样做。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 2011-01-07
    • 2020-07-16
    • 1970-01-01
    • 2013-03-16
    相关资源
    最近更新 更多