自己写的算法,如何用网格搜索进行超参数优化?

来源:5-1 简单线性回归

樟子松

2020-08-24

老师:
1.第四章 模仿 from sklearn.neighbors import KNeighborsClassifier 这个类写的kNN算法,我想用sklearn的网格搜索对自己写的算法中的k值进行超参数优化,如何实现?
2.老师,我学习别人的代码,代码中定义了一个函数,如下。每个形参后面都跟着一个“: object” ,最后还有“-> object”。这种用法,我没觉得跟不加object,有啥区别,可能是我知识不够,老师您了解吗?代码如下:
def binarize_Img(Img: object, number: object, proj: object, geotrans: object) -> object:
pass

写回答

1回答

liuyubobobo

2020-08-25

这是一个 sklearn 的使用问题(高级使用问题),简单地说,你需要实现一个 sklearn 定义的 estimator 的对象。因为,GridSearchCV 的第一个参数,要求是一个 estimator。(sklearn 中的所有算法类,都是一个 estimator)。

//img.mukewang.com/szimg/5f44430309027e4509750485.jpg


具体如何实现一个 estimator,sklearn 有一篇官方文档,可以参考这里:https://scikit-learn.org/stable/developers/develop.html


在网上搜索一下,应该也有很多人分享如何创建一个属于自己的 estimator,我简单搜索了一下,比如这个:http://danielhnyk.cz/creating-your-own-estimator-scikit-learn/


2

python 自 3.7 开始支持类型标注。它的这个代码在使用这个特性。对这个特性感兴趣,可以在网上搜索:类型标注。Python 对应的官方文档参考这里:https://docs.python.org/3/library/typing.html


但是,这个函数如果所有的参数都标注成 object,我个人认为意义不大。具体他这样写的用意是什么,你还是需要和代码的原作者讨论。



继续加油!:)

1
1
樟子松
非常感谢!
2020-08-26
共1条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5850 学习 · 2437 问题

查看课程