参考书
《Python数据科学手册》
工具
python3.5.1,Jupyter Notebook
在P438页,5.13.4 示例:不是很朴素的贝叶斯中的2. 使用自定义评估器小节中有这样一行代码
scores = [val.mean_validation_score for val in grid.grid_scores_]
运行之后报错:
AttributeError: ‘GridSearchCV’ object has no attribute ‘grid_scores_’
经过百度了之后,可以知道grid_scores_
在最新的sklearn中已经被弃用了,换成了cv_results_
,参考链接:https://blog.csdn.net/weixin_40283816/article/details/83346098
那么,更改这个参数后,依然报错:
AttributeError: ‘str’ object has no attribute ‘mean_validation_score’
这个问题就再也没有搜到好的解决方案了,所以我去查了GridSearchCV的文档:https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html
然后发现,关于cv_results_
的内容如下:
这就很尴尬了,所以没有一个参数是包含validation关键字的,我的理解是,验证集和测试集在某种情况下可以认为是等价的。所以我猜测mean_validation_score对应的应该就是mean_test_score。
这样,原来的代码就改成了
scores = grid.cv_results_['mean_test_score']
为了证明我的猜想是正确的,所以,按照得到的scores结果,顺着其他的代码,知道最后绘图:
事实证明,跟书上得到图一毛一样,所以证明我对源代码修改的猜想是正确的。
即证明了:
旧版本代码:scores = [val.mean_validation_score for val in grid.grid_scores_]
与新版本代码:scores = grid.cv_results_['mean_test_score']
等价!
将代码:scores = [val.mean_validation_score for val in grid.grid_scores_]
改成:scores = grid.cv_results_['mean_test_score']
我的CSDN:https://blog.csdn.net/qq_21579045
我的博客园:https://www.cnblogs.com/lyjun/
我的Github:https://github.com/TinyHandsome
纸上得来终觉浅,绝知此事要躬行~
欢迎大家过来OB~
by 李英俊小朋友