我有:
我的目的是,使用 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)//包含带有numpy数组的A-B-C文章
ground_truth =(150,1)//在numpy数组中包含地面实况数据
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交叉验证是否合理?
感谢。
答案 0 :(得分:0)
要扩展数据,您可以使用sklearn.preprocessing.scale
。如果date
是index
,它就像wiki3_scaled = scale(wiki3)
一样简单(如果没有,那么date
也会被缩放,你很可能不会这样做要)。
使用total_en
进行规范化是一项建模决策。如果您有理由相信A / total_en
是一个比A
更好的功能,那就去吧。更好的是,尝试两者。
如果您尝试从当天ground truth
,A
和B
预测C
,那么它不是真正的时间 - 系列问题和k-fold交叉验证肯定是明智的。如果您尝试预测今天的ground truth
来自A
,B
,C
,ground truth
,并且可能相应的滞后变量,然后我不明白你为什么不能交叉验证;只需要小心设置,以便训练历史并对未来进行交叉验证。
您可以在Cross Validated上获得关于这些建模决策的更好答案,因为StackOverFlow更注重编程。