Python 具有大量参数的sklearn的自定义估计器

Python 具有大量参数的sklearn的自定义估计器,python,parameters,scikit-learn,Python,Parameters,Scikit Learn,我正在尝试为sklearn定制一个带有很多参数的估计器。据我所知,我应该这样做: MyEstim类(BaseEstimator): 定义初始化(self,param1,param2): super()。\uuuu init\uuuuu() self.param1=param1 self.param2=param2 ... 但如果我有几十个或几百个参数,我不知道该怎么做。构建参数-有效值列表不是一个问题,但我不明白如何更好地将此列表传递给估计器,以使其在sklearn中工作 像这样的事情对我不起

我正在尝试为sklearn定制一个带有很多参数的估计器。据我所知,我应该这样做:

MyEstim类(BaseEstimator):
定义初始化(self,param1,param2):
super()。\uuuu init\uuuuu()
self.param1=param1
self.param2=param2
...
但如果我有几十个或几百个参数,我不知道该怎么做。构建参数-有效值列表不是一个问题,但我不明白如何更好地将此列表传递给估计器,以使其在sklearn中工作

像这样的事情对我不起作用:

def\uuuuu init\uuuuuuu(self,**kwargs):
super()。\uuuu init\uuuuu()
#来自kwargs的init参数

因为,据我所知,sklearn代码中有一些约定,所以它只能初始化在
\uuuu init\uuuuuuu
函数中显式定义的参数。

只要
get\u params
set\u params
方法按预期工作,您就可以使用
**kwargs

例如:

(摘自我写的一篇文章)


类别日志估计器(基本估计器):
定义初始值(自,est类=线性回归,**kwargs):
self.est\u class=est\u class
#KWARG取决于所使用的模型,因此请指定它们
对于键,kwargs.items()中的值:
setattr(自身、键、值)
self._param_names=['est_class']+列表(kwargs.keys())
def get_参数(self,deep=True):
#注意:我们将忽略deep参数
#这将不适用于具有子估计器的估计器
#看https://scikit-learn.org/stable/developers/develop.html#get-参数和设置参数
返回{param:getattr(self,param)
用于self中的参数。_param_names}
def set_参数(自身,**参数):
对于参数,参数.items()中的值:
setattr(自身、参数、值)
回归自我

只要您的
get_params
set_params
方法按预期工作,就可以使用
**kwargs

例如:

(摘自我写的一篇文章)


类别日志估计器(基本估计器):
定义初始值(自,est类=线性回归,**kwargs):
self.est\u class=est\u class
#KWARG取决于所使用的模型,因此请指定它们
对于键,kwargs.items()中的值:
setattr(自身、键、值)
self._param_names=['est_class']+列表(kwargs.keys())
def get_参数(self,deep=True):
#注意:我们将忽略deep参数
#这将不适用于具有子估计器的估计器
#看https://scikit-learn.org/stable/developers/develop.html#get-参数和设置参数
返回{param:getattr(self,param)
用于self中的参数。_param_names}
def set_参数(自身,**参数):
对于参数,参数.items()中的值:
setattr(自身、参数、值)
回归自我