2017-10-05 11 views
0

언더 샘플링을 사용하여 불균형 데이터에서 작업하고 있는데, 같은 비율로 두 클래스를 만들었습니다.cross_val_score를 사용하여 RandomForestClassifier에 대해 n_estimators를 조정할 때 오류가 발생합니까?

X_undersample dataframe (984,28) 
y_undersample dataframe(984,1) 

나는 최고의 매개 변수 내가 교차 유효성 검사를 사용하고 n_estimators을 찾기 위해, 랜덤 포레스트 분류를 사용하고 있습니다. 여기에 아래 코드가 있습니다.

j_shout=range(1,300) 
j_acc=[] 
for j in j_shout: 
    lr = RandomForestClassifier(n_estimators = j, criterion = 'entropy', random_state = 0) 
    score=cross_val_score(lr,X_undersample,y_undersample,cv=10,scoring='accuracy') 
    print ('iteration',j,':cross_validation accuracy=',score) 
    j_acc.append(score.mean()) 

이제 이것을 실행하면 다음 오류가 발생합니다.

File "<ipython-input-43-954a9717dcea>", line 5, in <module> 
    score=cross_val_score(lr,X_undersample,y_undersample,cv=10,scoring='accuracy') 

    File "D:\installations\AC\lib\site-packages\sklearn\cross_validation.py", line 1562, in cross_val_score 
    cv = check_cv(cv, X, y, classifier=is_classifier(estimator)) 

    File "D:\installations\AC\lib\site-packages\sklearn\cross_validation.py", line 1823, in check_cv 
    cv = StratifiedKFold(y, cv) 

    File "D:\installations\AC\lib\site-packages\sklearn\cross_validation.py", line 569, in __init__ 
    label_test_folds = test_folds[y == label] 

IndexError: too many indices for array 

나는 작은 값으로 n_estimators을 변경하려고하지만 여전히 StratifiedKFold가 평평하게 배열로 Y를 얻을, 그것은 보인다 StratifiedKFold 반복자의 문서를 배우기 scikit 당신의 추적과에 따르면 같은 오류를

답변

1

을 표시합니다. 귀하의 경우에는 크기 (984, 1)로 데이터 프레임을 전달합니다. 코드 부분은 다음과 같아야합니다.

score=cross_val_score(estimator=lr, 
         X=X_undersample.values, 
         y=y_undersample.values.ravel(), 
         cv=10, 
         scoring='accuracy') 
+0

와우 감사합니다. – danishxr