为线性回归 Python 创建径向基础

数据挖掘 Python 时间序列 线性回归
2022-02-15 12:17:23

我正在尝试使用线性回归进行时间序列预测,就像在这个视频中所做的那样:径向基础预测从 5:50 开始。

我理解基础的基本概念,但我认为我没有正确理解它在时间序列数据中的用法。我有一个带有每日时间戳和目标变量的 Pandas 数据框。我试着写径向基函数

def radial_basis(x, month):
    alpha = 0.5
    coef = -1/(2*alpha)
    return np.exp(coef*(x-month)**2)

以及每个月的计算基础(x 是行号)。这没有用。

关于我应该如何尝试做到这一点的任何提示?

2个回答

我能够自己解决这个问题。首先,您需要创建一个包含时间戳中年份值的列。然后对该列应用radial_basis函数,月份参数为每月的中间一天。例如,1 月是 15 日,2 月 45 日等。

使用此方法,您可以生成每个月的峰值。

data_all['Day'] = data_all.Timestamp.dt.dayofyear

def radial_basis(x, month):
    alpha = 8
    coef = -1/(2*alpha)
    return np.exp(coef*(x-month)**2)

for i in range(12):
    col = 'RB' + str(i+1)
    data_all[col] = data_all.Day.apply(radial_basis, month=(15+30*i))

以下定义确保您始终获得对称函数,即使您过渡到另一年。否则,您将在 12 月 31 日至 1 月 1 日之间跳槽。

def gaussian(x, month, alpha):
    if x - month <= 365 / 2:
        return np.exp(- (x - month) ** 2 / (2 * alpha))
    else:
        return np.exp(- (x - month - 365) ** 2 / ( 2 * alpha))

这似乎在 366 天之内都有效。