如果我写的话
class test_class(BaseEstimator, ClassifierMixin):
def __init__(self, model = LogisticRegression()):
self.model = model
# ... #
然后我可以这样做
test = test_class()
test.get_params()
我将LogisticRegression()的参数作为我的类参数的一部分,格式为" model __"。这样我就可以使用像GridSearchCV这样的类来轻松访问LogisticRegression的参数。
对于任意数量的模型,有没有办法做到这一点?
我尝试了一些方法,包括使用像这样的** kwargs参数:
class test_class(BaseEstimator, ClassifierMixin):
def __init__(self, model = LogisticRegression(), **kwargs):
self.model = model
for key in kwargs:
setattr(self, key, kwargs[key])
# ... #
然后如果我做
test = test_class(model_2 = RandomForestClassifier())
test.get_params()
我和以前一样(尽管将model_2添加为属性)。
我觉得这应该非常简单,但我没有到达任何地方 - 也许我想做的事情甚至没有意义。我的课程的目标是某种模型整体,我可以使用GridSearchCV。
有没有人有任何想法?
编辑:
我想给GridSearchCV提供的参数网格的一个例子是,考虑到第二个例子:
{
model__C : [1, 10],
model_2__n_estimators : [10, 100]
}
第一行按预期工作(考虑Pipelines如何与GridSearchCV一起使用),但第二行没有(因为在get_params()中找不到参数)。
我的合适,预测和得分方法都运行正常,这只是将参数传递给我想传递给我班级的其他模型的问题。