2017-10-11 6 views
0

그룹 (grp 열)을 기반으로하는 시계열 교차 유효성 검사를 수행하려고합니다. 아래의 샘플 데이터에서, 온도는이 코드를 사용하여 GRP에 따라 약간의 지연 기능을 추가하기 위해 기획하고timeseries 데이터의 계층화 된 교차 유효성 검사

import numpy as np 
import pandas as pd 
timeS=pd.date_range(start='1980-01-01 00:00:00', end='1980-01-01 00:00:05', 
freq='S') 
df = pd.DataFrame(dict(time=timeS, grp=['A']*3 + ['B']*3, material=[1,2,3]*2, 
temperature=['2.4','5','9.9']*2)) 


    grp material temperature time 
0 A 1  2.4    1980-01-01 00:00:00 
1 A 2  5     1980-01-01 00:00:01 
2 A 3  9.9    1980-01-01 00:00:02 
3 B 1  2.4    1980-01-01 00:00:03 
4 B 2  5     1980-01-01 00:00:04 
5 B 3  9.9    1980-01-01 00:00:05 

변수 내 대상입니다. 내가 sklearn sklearn.model_selection.TimeSeriesSplit에서이 기능을 사용 할 수 있습니다 교차 유효성 검사를 수행 할 때

df.groupby("grp")['temperature'].shift(-1) 
0  5 
1 9.9 
2 NaN 
3  5 
4 9.9 
5 NaN 
Name: temperature, dtype: object 

내가 가지고 지금 문제는 있지만 그룹의 효과를 고려하지 않습니다. 누구나 그룹당 CV 분할 (층화 분할과 같은)하는 방법을 말해 줄 수 있습니까? 도움이된다면 CVS 용 xgboost.cv를 사용할 것입니다.

편집 : 그룹당 시간 변경. 그룹

답변

0

내의 균일 초당 시간이 증가는 다음을 수행한다 :

series = Series.from_csv('yourfile.csv', header=0) 
    X = series.values 
    n_train = 500 
    n_records = len(X) 
    for i in range(n_train, n_records): 
     train, test = X[0:i], X[i:i+1] 
     print('train=%d, test=%d' % (len(train), len(test)))