标准化时间序列- Scikit



我有:

  1. 维基百科条目访问数(每周)(A-B-C)
  2. 地面真实数据(每周)
  3. 维基百科英文文章总访问量(每周)

我的目的是,用3个维基百科文章访问计数构建一个多元线性回归,并尝试预测未来的真实数据

在开始构建多元线性回归之前,我想对我的3个维基百科访问计数数据进行一些预处理(规范化或缩放)。

我的数据格式是这样的

    date     | A (x1)     | B (x2)  |  C (x3) | total_en     | ground truth(y)
 01/01/2008  |   5611     |   606   |    376  |  1467923911  | 3.13599886
 08/01/2008  |   8147     |   912   |    569  |  1627405409  | 2.53335614
 15/01/2008  |   9809     |   873   |    597  |  1744099880  | 2.91287713
 22/01/2008  |   12020    |   882   |    600  |  1804646235  | 3.44497102  
 ...         |    ...     |   ...   |    ...  |    ...       | ...

没有归一化,我像这样构建多元线性回归。

wiki3。shape =(150,3)//包含A-B-C的文章

ground_truth =(150,1)//包含numpy数组中的ground truth数据

X_train, X_test, y_train, y_test = cross_validation.train_test_split(wiki3, ground_truth, test_size=0.3, random_state=1)
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
predictions = model.predict(X_test)

我的问题是为了更好的结果我如何规范化/缩放我的x1,x2,x3和y数据?

我应该用英文文章的总流量规范化每篇文章吗?还是应该用另一种方式?

K-Fold交叉验证对时间序列是否合理?

谢谢。

要扩展数据,可以使用sklearn.preprocessing.scale。如果date是您的index,则与wiki3_scaled = scale(wiki3)一样简单(如果不是,则date也将缩放,这可能是您不想要的)。

使用total_en进行规范化是一个建模决策。如果您有理由相信A / total_en是一个比A更好的特性,那么就使用它吧。最好两者都试试。

如果你试图从同一天的ABC预测ground truth,那么它就不是一个真正的时间序列问题,k-Fold交叉验证当然是明智的。如果你试图从今天的A, B, C, ground truth以及各自的滞后变量预测未来的ground truth,那么我不明白为什么你也不能交叉验证;只是要小心地设置它,以便您根据历史进行培训,并针对未来进行交叉验证。

您可能会在Cross Validated上得到这些建模决策的更好答案,因为StackOverFlow更侧重于编程。

相关内容

  • 没有找到相关文章

最新更新