- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 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/
我使用 scipy.signal.detrend 中的以下代码对 python 中的数据进行去趋势处理 detrended =signal.detrend(feature, axis=-1, type
我使用 scipy.signal.detrend 中的以下代码对 python 中的数据进行去趋势处理 detrended =signal.detrend(feature, axis=-1, type
我正在尝试消除这个一维数组的趋势: array([13.64352283, 13.48914862, 13.00767009, 13.35416524, 13.60143818, 13.
我是一名优秀的程序员,十分优秀!