2016-09-30 3 views
1
내가 다른 실행에 대한 서로 다른 값을 받고 있어요

와 cross_val_score을 사용하는 방법 ... 내가 잘못 여기서 뭐하는 오전 :는 random_state

X=np.random.random((100,5)) 
y=np.random.randint(0,2,(100,)) 
clf=RandomForestClassifier() 
cv = StratifiedKFold(y, random_state=1) 
s = cross_val_score(clf, X,y,scoring='roc_auc', cv=cv) 
print(s) 
# [ 0.42321429 0.44360902 0.34398496] 
s = cross_val_score(clf, X,y,scoring='roc_auc', cv=cv) 
print(s) 
# [ 0.42678571 0.46804511 0.36090226] 

답변

4

당신이 RandomForestClassifier 그 기본 인수를 호출하고 있습니다 실수, random_state입니다 없음. 따라서 임의의 출력을 생성하기 위해 np.random에 의해 생성 된 시드를 선택합니다.

StratifiedKFoldRandomForestClassifier 모두는 교차 검증의 점수가 동일한 어레이를 생성하기 위해 동일해야합니다.

그림 :

X=np.random.random((100,5)) 
y=np.random.randint(0,2,(100,)) 

clf = RandomForestClassifier(random_state=1) 
cv = StratifiedKFold(y, random_state=1)  # Setting random_state is not necessary here 
s = cross_val_score(clf, X,y,scoring='roc_auc', cv=cv) 
print(s) 
##[ 0.57612457 0.29044118 0.30514706] 
print(s) 
##[ 0.57612457 0.29044118 0.30514706] 

는 모두 RFC 및 SKF에 대한 random_state 인수를 제공하지하는 것 대항하는 또 다른 방법. 그러나 처음에는 임의의 정수를 생성하기 위해 np.random.seed(value)을 제공하면됩니다. 이것들은 출력에서도 같은 배열을 생성합니다.

+1

하하 그래, 단서가 그 이름에있는 것 같아. 그것은'DeterministicForestClassifier'라고 부르지 않아?! – maxymoo