max*_*moo 6 python machine-learning scikit-learn
我在不同的运行中获得了不同的值...在这里我做错了什么:
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]
Run Code Online (Sandbox Code Playgroud)
您犯的错误是调用RandomForestClassifier其默认arg random_state为None的错误。因此,它拾取由生成的种子np.random以产生随机输出。
的random_state在这两个StratifiedKFold和RandomForestClassifier需要是相同序,以产生交叉验证的分数等于阵列。
插图:
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]
Run Code Online (Sandbox Code Playgroud)
解决它的另一种方法是不random_state同时为RFC和SKF 提供args。但是,只需np.random.seed(value)在开头提供即可创建随机整数。这些也会在输出处创建相等的数组。
| 归档时间: |
|
| 查看次数: |
4736 次 |
| 最近记录: |