[英]Why is my cross_val_score always different even when I have set my random state beforehand?
我對機器學習很陌生,最近遇到了一個我不確定的問題。 當我在 Jupyter Notebook 中運行代碼(如圖所示)時,它每次都會給我不同的分數,我不知道為什么?
我認為通過為 KFold 設置 random_state 或種子,它每次都會為我的cross_val_score
提供相同的分數?
results = []
names = []
seed=12
for name, model in models:
kfold = KFold(n_splits=num_folds, random_state=seed)
cv_results = cross_val_score(model, X_train, y_train.ravel(), cv=kfold, scoring=scoring)
results.append(cv_results)
names.append(name)
msg = '{}: score: {:.2f}, std_dev:{:.2f}'.format(name,
cv_results.mean(), cv_results.std())
print(msg)
一些示例輸出:
LR: score: -24.69, std_dev: 19.74
LASSO: score: -29.82, std_dev: 20.94
EN: score: -28.59, std_dev: 19.79
KNN: score: -38.66, std_dev: 28.77
CART: score: -16.42, std_dev: 15.39
SVR: score: -60.53, std_dev: 44.24
對於使用相同代碼的第二次運行(同樣的種子):
LR: score: -24.69, std_dev: 19.74
LASSO: score: -29.82, std_dev: 20.94
EN: score: -28.59, std_dev: 19.79
KNN: score: -38.66, std_dev: 28.77
CART: score: -18.65, std_dev: 17.91
SVR: score: -60.53, std_dev: 44.24
在kfold = KFold(n_splits=num_folds, random_state=seed)
,我認為您需要添加shuffle = True
,如果沒有,默認情況下shuffle = False
並且random_state
無效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.