如何解决使用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 举报,一经查实,本站将立刻删除。