2016-09-30 32 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其默認ARG的錯誤,random_state是沒有。因此,它拾取由np.random生成的種子以產生隨機輸出。

StratifiedKFoldRandomForestClassifier中的random_state需要是相同的,以產生相同的交叉驗證分數陣列。

插圖:

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] 

對付這將是不提供random_state args作爲兩個RFC和SKF的另一種方式。但是,只需提供np.random.seed(value)即可在開始時創建隨機整數。這些也會在輸出端創建相同的數組。

+1

哈哈是我想線索是在名稱,它不叫'DeterministicForestClassifier'是嗎?! – maxymoo

相關問題