You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sklearn自定义估算器:如何自动定义get_params()方法?

关于Scikit-learn估算器自动定义get_params()的解决方案

嘿,这个问题问得好!既然set_params()不用手动列出所有参数就能实现,那get_params()当然也有自动定义的方式——而且这正是Scikit-learn官方推荐的最佳实践。

你只需要让自定义估算器继承sklearn.base.BaseEstimator这个基类,它会自动为你实现符合规范的get_params()和set_params()方法,完全不需要你手动编写这两个方法。

简化后的示例代码

from sklearn.base import BaseEstimator

class MyEstimator(BaseEstimator):
    def __init__(self, verbose=False):
        self.verbose = verbose
    
    # 只需要实现fit()等核心业务方法即可
    def fit(self, X, y=None):
        if self.verbose:
            print("正在拟合模型...")
        # 这里编写你的拟合逻辑
        return self
    
    # 其他如predict()、transform()等方法按需实现

为什么继承BaseEstimator能自动实现get_params()?

BaseEstimator提供的默认get_params()方法会自动扫描你的__init__方法中定义的所有参数,将参数名与对应的实例属性值组成字典返回;而默认的set_params()也会自动处理参数的赋值逻辑,和你手动写的逻辑效果完全一致,还能避免手动编写时可能出现的遗漏或错误。

当然,如果你的估算器有特殊需求(比如某些内部参数不想对外暴露在get_params()的返回结果中),你也可以选择重写get_params()方法,但绝大多数场景下,使用BaseEstimator的默认实现就足够简洁且符合Scikit-learn的规范。

内容的提问来源于stack exchange,提问作者diadochos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:54:37