【发布时间】:2015-06-27 05:27:45
【问题描述】:
我正在尝试使用 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。
【问题讨论】:
-
将您的日期转换为自纪元以来的时间:stackoverflow.com/questions/15203623/…
-
谢谢。下面的解决方案更“流行”。
-
这里有同样的愿望。我很遗憾 sklearn 无法处理日期时间索引...我希望科学堆栈可以更好地协同工作。