2016-08-16 3 views
-1

이것은 매우 간단한 질문 일 가능성이 있지만 혼란스럽고 한동안 붙어있어서 도움이되기를 바랍니다.판다에서 데이터 분할하기

데이터 유효성 검사를 위해 교차 유효성 검사를 사용하고 있지만 팬더 인덱스가 예상대로 작동하지 않는 것으로 나타났습니다. 특히 x_test를 출력 할 때 x_test에 대한 데이터 포인트가 없다는 것을 알았습니다. 실제로 인덱스가 있지만 열은 없습니다.

k = 10 
N = len(df) 
n = N/k + 1 
for i in range(k): 
    print i*n, i*n+n 
    x_train = df.iloc[i*n: i*n+n] 
    y_train = df.iloc[i*n: i*n+n] 
    x_test = df.iloc[0:i*n, i*n+n:-1] 
    print x_test 

일반적인 출력 :

0 751 
Empty DataFrame 
Columns: [] 
Index: [] 
751 1502 
Empty DataFrame 
Columns: [] 
Index: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, ...] 

나는 데이터를 표시하는 방법을 알아 해결하려고 노력하고있다. 이견있는 사람?

답변

0

sklearn.cross_validation.KFold을 사용하지 않으시겠습니까? 당신은뿐만 아니라 열을 지정해야 모든 부분 집합에서

: 당신이 목표 컬럼을 제외 할 필요 x_testx_train에서와 y_train에서,이 사이트에 명확한 예 ...


UPDATE가있다 대상 열만 있어야합니다. 자세한 내용은 slicing and indexing을 참조하십시오.

target = 'target' # name of target column 
list_features = df.columns.tolist() # use all columns at model training 
list_features.remove(target) # excluding "target" column 
k = 10 
N = len(df) 
n = int(N/k) + 1 # 'int()' is necessary at Python 3 
for i in range(k): 
    print i*n, i*n+n 
    x_train = df.loc[i*n: i*n+n-1, list_features] # '.loc[]' is inclusive, that's why "-1" is present 
    y_train = df.loc[i*n: i*n+n-1, target] # specify columns after "," 
    x_test = df.loc[~df.index.isin(range(int(i*n), int(i*n+n))), list_features] 
    print x_test 
+0

차라리 내 자신을 구축하여 구현 방법을 알 수 있습니다. – chris

+0

내 대답이 업데이트되었습니다. – ragesz

관련 문제