为什么即使我事先设置了随机状态,我的 cross_val_score 总是不同?
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
在 sklearn
中,decision trees and random forests 也取决于随机性,因此您需要为这些估计器设置随机状态以确保再现性。
请注意,其他模型的分数是相同的。
在kfold = KFold(n_splits=num_folds, random_state=seed)
中,我觉得你需要加上shuffle = True
,如果没有,默认shuffle = False
,random_state
没有作用。
我对机器学习还很陌生,最近 运行 遇到了一个我不确定的问题。当我 运行 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
在 sklearn
中,decision trees and random forests 也取决于随机性,因此您需要为这些估计器设置随机状态以确保再现性。
请注意,其他模型的分数是相同的。
在kfold = KFold(n_splits=num_folds, random_state=seed)
中,我觉得你需要加上shuffle = True
,如果没有,默认shuffle = False
,random_state
没有作用。