【发布时间】:2021-01-20 06:14:55
【问题描述】:
我正在学习统计学习 / ML 课程,目前正在做一个包括分类任务的项目,并且我有一些关于 random_state 参数的新手问题。我的模型的准确性会根据 random_state 发生很大变化。我目前正在使用逻辑回归(来自 sklearn.linear_model.LogisticRegression())。我尝试使用 GridSearchCV 方法调整超参数。
问题: 我得到不同的预测精度,具体取决于我使用的 random_state。
我尝试过的: 我试图将 random_state 参数设置为全局状态(使用 np.random.seed(randomState) 并将 randomState 设置为脚本顶部的整数)。此外,我使用
train_test_split(X, y, test_size=0.2, random_state=randomState)
具有相同的(全局)整数 randomState。此外,我想执行 GridSearchCV 来调整超参数。因此,我指定了一个 param_grid 并在其上执行 GridSearchCV。从中,我找到了最好的估计器并选择它作为我的模型。然后,我使用我的模型进行预测并打印结果的分类报告。我通过更改 randomState 来计算 10 次运行的平均值。
示例:我使用 randomState=1 执行此过程,并从 GridSearchCV 中找到最佳模型:model_1。我得到了 84% 的准确率。如果我更改为 randomState = 2,...,10 并且仍然使用 model_1,则平均准确度变为 80.5%。 我使用 randomState=42 执行此过程,并从 GridSearchCV 中找到最佳模型:model_42。我得到了 77% 的准确率。如果 Im 更改为 randomState = 41, 40, 39,..,32 并仍然使用 model_42,则平均准确率变为 78.7%。
我很困惑为什么准确度会因 random_state 的不同而有很大差异。
【问题讨论】:
标签: machine-learning scikit-learn random-seed