【问题标题】:Inverse scaling output data with different dimension from the input与输入具有不同维度的反向缩放输出数据
【发布时间】:2021-07-31 17:40:02
【问题描述】:

我正在使用神经网络(监督学习)来训练 Safety-Gym 中的代理。 收集数据后,我需要在输入目标中缩放和划分它们。 我对整个数据集执行缩放:

scaler = StandardScaler()
scaler.fit(Dataset)
scaler.transform(Dataset)

然后我使用数据集(numpy 数组)上的切片将我的数据集分配到输入目标中。

我认为我不需要在训练期间(即计算损失函数时)对输出进行逆变换,但我认为当我想对环境采取行动时需要对其进行逆变换。 问题是输出的维度与数据集不同,所以我不能使用 inverse_transform 方法。

正确的做法是什么?

【问题讨论】:

    标签: python numpy scikit-learn neural-network


    【解决方案1】:

    是的。你说得对。您不需要在训练期间进行逆变换。

    在学习和训练模型之后,您应该使用相同的缩放器对您的预测结果进行逆变换,以便您可以将其与您的真实数据进行比较。

    最后,您应该在部署模型时对新传入数据使用缩放器。

    提示:可以使用

    scaler.fit_transform() 
    scaler.inverse_transform()
    

    查看更多:standard_scaler

    【讨论】:

    • 我的数据集有 n 行 101 列,而我的网络的输出有 n 行和 98 列。我想知道,在给定不同维度的情况下,无法使用 Inverse_Transform 函数,访问 Scaler 对象并获取 98 列的平均值和 STD 偏差,然后手动计算逆变换是否有意义。我希望我已经清楚了:D
    • 我之前也遇到过同样的问题。我只是通过添加另一列零来确保它们具有相同的形状。请注意,缩放器按列工作,因此如果您添加具有任何值的列或者行数存在差异,则不会有问题。
    猜你喜欢
    • 2021-08-01
    • 2014-04-17
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 2023-03-19
    • 2020-10-13
    • 2012-12-14
    • 1970-01-01
    相关资源
    最近更新 更多