2017-05-16 3 views
-1

이 오류는 특정 3 열에서만 발생하며 다른 열과 잘 작동합니다.오류 : 기계 학습 알고리즘에 제공하기 위해 데이터 집합을 분할하는 중

오류 : 내 코드

Traceback (most recent call last): 
    File "/version1/analyze.py", line 447, in <module> 
    cv_results = model_selection.cross_val_score(model, X_train, Y_train,cv=kfold, scoring=scoring) 

File "/usr/lib64/python2.7/site-packages/sklearn/model_selection/_validation.py", line 140, in cross_val_score 
    for train, test in cv_iter) 

fac = 1./(n_samples - n_classes) 

ZeroDivisionError: float division by zero 

: 난 내 데이터 세트에서 몇 가지 특정 열을 선택한 경우에만

validation_size = 0.20 
seed = 10 
X_train, X_validation, Y_train, Y_validation = model_selection.train_test_split(X, Y, test_size=validation_size, random_state=seed) 
seed = 10 
scoring = 'accuracy' 

kfold = model_selection.KFold(n_splits=10, random_state=seed) 

cv_results = model_selection.cross_val_score(model, X_train, Y_train,cv=kfold, scoring=scoring) #error occurs here 

위의 오류가 발생, 그것은 다른 열이 잘 작동!

모든 열은 동일한 데이터 수 및 유사한 종류의 값을 갖습니다.

#code for Split-out validation dataset 
    array = dataset.values 

    if field == "rh": 
    X = array[:,0:8] 

    elif field == "rm": 
    X = array[:,0:8] 

    elif field == "wh": 
    X = array[:,0:8] 

    elif field == "wm": 
    X = array[:,0:8] 

    else : 
    print"wrong field" 

    if field == "rh": 
     Y = array[:,0]  #works fine , even for 4,5,6,7 it works 

    elif field == "rm":  #gives the above error only for 1,2,3 
     Y = array[:,1]  #gives the above error 

    elif field == "wh":  #gives the above error 
     Y = array[:,2] 

    elif field == "wm":  #gives the above error 
     Y = array[:,3] 

    else : 
     print"wrong field" 

내 데이터 세트입니다 :

 index,1column,2 column,3column,….,8column 
     0,238,240,1103,409,1038,4,67,0 
     1,41,359,995,467,1317,8,71,0 
     2,102,616,1168,480,1206,7,59,0 
     3,0,34,994,181,1115,4,68,0 
     4,88,1419,1175,413,1060,8,71,0 
     5,826,10886,1316,6885,2086,263,119,0 
     6,88,472,1200,652,1047,7,64,0 
     7,0,322,957,533,1062,11,73,0 
     8,0,200,1170,421,1038,5,63,0 
     9,103,1439,1085,1638,1151,29,66,0 
     10,0,1422,1074,4832,1084,27,74,0 
     11,1828,754,11030,263845,1209,10,79,0 
     12,340,1644,11181,175099,4127,13,136,0 
     13,71,1018,1029,2480,1276,18,66,1 
     14,0,3077,1116,1696,1129,6,62,0 

      “””””” 
      ‘””””” 

총 105 데이터 레코드

그러나 위의 오류가 1 열 발생하지 않습니다, 그 때 Y = 1 열, 그러나 위 다른 열 2, 3 또는 4를 선택하면 같은 오류가 발생합니다.

+0

'n_samples - n_classes'는 0 일 수 없습니다. – VMRuiz

+0

예,하지만 이것을 처리하는 방법은 무엇입니까? – programmer

+0

'validation_size'를 변경하거나 더 많은 샘플을 추가하십시오. 코드를 실행하거나 데이터 집합을 알지 않고도 추측하기가 어렵습니다. – VMRuiz

답변

1

n_samples는 데이터 집합의 행이고 n_classes는 레이블 배열의 고유 한 클래스 레이블입니다. 데이터 세트에 레이블 클래스가 없기 때문에 위의 오류가 발생했습니다!

+0

내 하루를 저장했습니다! – penduDev