scikit-learn - 验证 RandomizedSearchCV 结果的问题
问题描述
我从一个基本的逻辑回归开始,使用所有默认超参数。我得到 0.8855 的分数
问题接下来我运行一个随机搜索来找到最好的超参数;根据 RandomSearch C=10 with Max_iterations=110 给出 0.89 的分数
我使用这些超参数运行逻辑,但获得了更好的准确度,0.91!
为什么我没有得到完全相同的号码?
解决方案
当您在训练集中再次运行它时,您肯定不会获得相同的准确度,这是因为当您进行 k 折交叉验证以检查特定超参数集的性能时,您会将整个数据分成多个k
集合并使用k-1
集进行训练并在剩下的一组上对其进行验证。并且您重复此过程k
时间,并且每次您使用一组不同的数据进行验证。最后你计算所有k
迭代的平均值并报告你得到的准确度random_result.best_score_
,下图解释了这个过程
现在,在获得一组最佳超参数后,您将把它拟合到整个训练数据上,即第 1 组、第 2 组和第 3 组,所以现在它很容易出现一些变化,因为数据已经改变并且您正在评估整个火车数据。所以你观察到的是完全正常的和通常的行为。
希望这可以帮助!
推荐阅读
- c++ - 如何修复目标文件中的重复函数?
- python - scrapy:如何获取标题后的所有段落?
- swift - 如何引用 TableView 部分标签?迅速
- html - Bootstrap 4 selectpicker未以角度6显示
- c++ - Mysql 无法为 Visual Studio 安装
- python - Django 动态更改 get_context_data 中的 template_name
- javascript - Bootstrap 打开简单模态
- mysql - reactjs - 如何在reactjs的搜索查询中从数据库中获取数据?
- javascript - 在 Elementor 弹出窗口中填写输入字段
- react-native - 显示来自 Firestore React native 的日期