gpt4 book ai didi

python - 使用 Scikit Learn 对时间序列 pandas 数据框进行线性回归

转载 作者:太空狗 更新时间:2023-10-29 18:24:17 24 4
gpt4 key购买 nike

我正在尝试使用 scikit 学习线性回归器对 Pandas 数据框进行简单的线性回归。我的数据是一个时间序列,pandas 数据框有一个日期时间索引:

                value
2007-01-01 0.771305
2007-02-01 0.256628
2008-01-01 0.670920
2008-02-01 0.098047

做一些简单的事

from sklearn import linear_model

lr = linear_model.LinearRegression()

lr(data.index, data['value'])

没用:

float() argument must be a string or a number

所以我尝试创建一个包含日期的新列以尝试对其进行转换:

data['date'] = data.index
data['date'] = pd.to_datetime(data['date'])
lr(data['date'], data['value'])

但现在我得到:

ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

所以回归器无法处理日期时间。例如,我看到了很多将整数数据转换为日期时间的方法,但找不到将日期时间转换为整数的方法。

执行此操作的正确方法是什么?

PS:我对使用 scikit 很感兴趣,因为我计划以后用它做更多的事情,所以现在没有 statsmodels。

最佳答案

您可能希望将自开始以来的天数作为此处的预测指标。假设一切都已排序:

In [36]: X = (df.index -  df.index[0]).days.reshape(-1, 1)

In [37]: y = df['value'].values

In [38]: linear_model.LinearRegression().fit(X, y)
Out[38]: LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)

您为预测器使用的确切单位并不重要,可能是天或月。系数和解释会发生变化,因此一切都会产生相同的结果。另外,请注意我们需要 reshape(-1, 1) 以便 X 具有预期的格式。

关于python - 使用 Scikit Learn 对时间序列 pandas 数据框进行线性回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29748717/

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