微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用Scikit Learn对时间序列pandas数据框进行线性回归

您可能希望从开始算起的天数成为此处的预测指标。假设所有内容都已排序:

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处于预期格式。

解决方法

我正在尝试使用scikit学习线性回归器对熊猫数据框进行简单的线性回归。我的数据是一个时间序列,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。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。