gpt4 book ai didi

python - python 中的 Scipy Detrend

转载 作者:行者123 更新时间:2023-12-02 19:32:37 24 4
gpt4 key购买 nike

我使用 scipy.signal.detrend 中的以下代码对 python 中的数据进行去趋势处理

detrended =signal.detrend(feature, axis=-1, type='constant', bp=0, overwrite_data=True)
np.savetxt('constant detrend.csv', detrended, delimiter=',', fmt='%s')

最后一行将数据保存到 csv 文件中,然后我重新加载此数据以运行一些模型。我发现我的随机森林模型在去趋势数据集上表现得非常好。

接下来将使用这个模型进行预测。然而,我有点不确定如何从去趋势数据集转移到我可以理解的更有意义的数据集。根据我的理解,去趋势消除了均值并对数据进行了标准化。但是,如果我进行预测,我需要能够看到预测的实际数字,而不是去趋势的数字。

有没有一种方法可以读取平均值并重新标准化以获得我可以解释的“有意义的数据集”。例如,我的数据集有一个降雨量变量。所以每个月我都可以看到下雨的次数。但是当我去趋势时,降雨量值不再是实际降雨量。当我进行预测时,我希望能够说本月降雨量为 200 毫米,但我的预测并没有告诉我这一点,因为数据已去趋势化。

任何帮助将不胜感激。

最佳答案

根据文档,detrend只需从数据中删除最小二乘线拟合即可。当您使用 type='constant' 时,它会更简单,因为它只是删除平均值:

If type == 'constant', only the mean of data is subtracted.

源代码证实了这一点。检查输入后,整个计算在一行中完成( scipy/signal/signaltools.py, line 3261 ):

 ret = data - np.expand_dims(np.mean(data, axis), axis)

获得减去平均值的最简单方法是手动执行计算,因为它非常简单。

mean = np.mean(feature, axis=-1, keepdims=True)
detrended = feature - mean

您可以将平均值保存到文件中,或者用它做任何您想做的事情。要“重新趋势”,只需将平均值添加回来即可:

point = prediction + mean

如果您担心其他一些操作,例如标准化到最大值,您可以用同样的方式处理它。

max = np.amax(detrended, axis=-1, keepdims=True)
detrended /= max

在这种情况下,您必须在抵消重新趋势之前进行乘法运算:

point = prediction * max + mean

像这样的简单操作很容易手工重现。更复杂的函数可能难以可靠地重现,但也更有可能返回它使用的参数,至少是可选的。

关于python - python 中的 Scipy Detrend,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61574495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com