【发布时间】:2018-05-18 16:04:42
【问题描述】:
我正在使用 sklearn 进行预测。通常我会为预测创建滞后数据,如果特征只包含 1 列,这很容易。
例如:
index temperature
1 100
2 80
3 50
4 90
5 110
通常我会创建另一列,使用以下函数移动温度值以创建滞后数据:
dataframe.temperature.shift()
所以我的数据框变成:
index temperature temperature2 temperature3
1 100 NaN NaN
2 80 100 NaN
3 50 80 100
4 90 50 80
5 110 90 50
然后当我想预测时,我可以使用如下代码进行拟合:
x = dataframe.loc[:,('temperature3','temperature2')]
y = dataframe.temperature
model.fit([x],y)
问题是当我有很多列要创建滞后数据,并且每列需要更多滞后数据时,我的数据框会太大。
有什么简单的方法可以使用吗?谢谢!
作为参考,这是我的数据框:
import pandas as pd
import talib
df = pd.read_csv('..\\data\\uj5.CSV', names=['date','time','open','high','low','close','volume'])
df.index = pd.to_datetime(df.date + df.time,format='%Y.%m.%d%H:%M')
# assuming this is the 'X', let say i need 100 lags of these column to predict the 'Y'
df['CDLBELTHOLD'] = talib.CDLBELTHOLD(df.open.values, df.high.values, df.low.values, df.close.values)
df['CDLCLOSINGMARUBOZU'] = talib.CDLCLOSINGMARUBOZU(df.open.values, df.high.values, df.low.values, df.close.values)
df['CDLDOJI'] = talib.CDLDOJI(df.open.values, df.high.values, df.low.values, df.close.values)
df['CDLHIKKAKE'] = talib.CDLHIKKAKE(df.open.values, df.high.values, df.low.values, df.close.values)
df['CDLLONGLEGGEDDOJI'] = talib.CDLLONGLEGGEDDOJI(df.open.values, df.high.values, df.low.values, df.close.values)
df['CDLLONGLINE'] = talib. CDLLONGLINE(df.open.values, df.high.values, df.low.values, df.close.values)
df['CDLSHORTLINE'] = talib.CDLSHORTLINE(df.open.values, df.high.values, df.low.values, df.close.values)
df['CDLSPINNINGTOP'] = talib.CDLSPINNINGTOP(df.open.values, df.high.values, df.low.values, df.close.values)
df['atr'] = talib.ATR(df.high.values, df.low.values, df.close.values,timeperiod=14)
#assuming this is the Y
df['target'] = #some int value
【问题讨论】:
-
也许创建一个列名列表然后遍历它。
-
@cᴏʟᴅsᴘᴇᴇᴅ:解决方案不是使用滞后 n 数据创建多列,而是在计算时动态创建中间值。
-
不与 scikit 结合使用。调用 model.fit() 时,您需要准备好数据(如您所说的大数据框)
-
FSuyuti:请给我们展示一下计算,已经!您可以使用计算的矩阵乘法公式来获取所有滞后 k 项。除非您尽快提出问题,否则此问题已经获得 4 票关闭,并且很可能被关闭。很遗憾,因为我怀疑您的计算很有趣,而且矩阵乘法公式会很简洁并且可以节省大量内存。
标签: python pandas scikit-learn forecasting sklearn-pandas