check_estimator#

sklearn.utils.estimator_checks.check_estimator(estimator=None, generate_only=False, *, legacy: bool = True, expected_failed_checks: dict[str, str] | None = None, on_skip: Literal['warn'] | None = 'warn', on_fail: Literal['raise', 'warn'] | None = 'raise', callback: Callable | None = None)[原始碼]#

檢查估算器是否符合 scikit-learn 的慣例。

此函數將執行廣泛的測試套件,用於輸入驗證、形狀等,確保估算器符合 scikit-learn 慣例,如 自行開發估算器 中所述。如果 Estimator 類別繼承自 sklearn.base 中對應的 mixin,則會執行分類器、迴歸器、群集或轉換器的其他測試。

scikit-learn 還提供一個 pytest 專用的裝飾器,parametrize_with_checks,使得測試多個估算器更容易。

檢查分為以下幾類

參數:
estimator估算器物件

要檢查的估算器實例。

generate_onlybool,預設值為 False

False 時,會在呼叫 check_estimator 時評估檢查。當 True 時,check_estimator 會傳回產生器,該產生器會產生 (估算器, 檢查) 元組。檢查會透過呼叫 check(estimator) 來執行。

在版本 0.22 中新增。

自版本 1.6 起已棄用:generate_only 將在 1.8 中移除。請改用 estimator_checks_generator

legacybool,預設值為 True

是否包含舊版檢查。隨著時間的推移,我們會將此類別中的檢查移除,並將它們移至其特定類別。

在版本 1.6 中新增。

expected_failed_checksdict,預設值為 None

形式為的字典

{
    "check_name": "this check is expected to fail because ...",
}

其中 "check_name" 是檢查的名稱,而 "my reason" 是檢查失敗的原因。

在版本 1.6 中新增。

on_skip「warn」、None,預設值為「warn」

此參數控制當檢查被跳過時會發生什麼情況。

  • 「warn」:會記錄 SkipTestWarning,並繼續執行測試。

  • None:不會記錄警告,並繼續執行測試。

在版本 1.6 中新增。

on_fail{「raise」、「warn」}、None,預設值為「raise」

此參數控制當檢查失敗時會發生什麼情況。

  • 「raise」:會引發第一個失敗檢查所引發的例外狀況,並中止正在執行的測試。這不包括預期會失敗的測試。

  • 「warn」:會記錄 EstimatorCheckFailedWarning,並繼續執行測試。

  • None:不會引發例外狀況,也不會記錄警告。

請注意,如果 on_fail != "raise",即使檢查失敗也不會引發例外狀況。您需要檢查 check_estimator 的傳回結果,以檢查是否有任何檢查失敗。

在版本 1.6 中新增。

callback可呼叫物件或 None,預設值為 None

此回呼函式將會被呼叫,並帶有估算器和檢查名稱、例外狀況(如果有的話)、檢查狀態(xfail、failed、skipped、passed),以及當檢查預期失敗時的失敗原因。此可呼叫物件的簽名需要是:

def callback(
    estimator,
    check_name: str,
    exception: Exception,
    status: Literal["xfail", "failed", "skipped", "passed"],
    expected_to_fail: bool,
    expected_to_fail_reason: str,
)

callback 不可與 on_fail="raise" 一起提供。

在版本 1.6 中新增。

回傳值:
test_results列表

包含失敗測試結果的字典列表,形式如下

{
    "estimator": estimator,
    "check_name": check_name,
    "exception": exception,
    "status": status (one of "xfail", "failed", "skipped", "passed"),
    "expected_to_fail": expected_to_fail,
    "expected_to_fail_reason": expected_to_fail_reason,
}
estimator_checks_generator產生器

產生 (estimator, check) 元組的產生器。當 generate_only=True 時回傳。

自版本 1.6 起已棄用:generate_only 將在 1.8 中移除。請改用 estimator_checks_generator

拋出:
例外狀況

如果 on_fail="raise",則會拋出第一個失敗檢查所拋出的例外狀況,並且中止正在執行的測試。

請注意,如果 on_fail != "raise",即使檢查失敗也不會引發例外狀況。您需要檢查 check_estimator 的傳回結果,以檢查是否有任何檢查失敗。

另請參閱

parametrize_with_checks

用於參數化估算器檢查的 Pytest 特定裝飾器。

estimator_checks_generator

產生 (estimator, check) 元組的產生器。

範例

>>> from sklearn.utils.estimator_checks import check_estimator
>>> from sklearn.linear_model import LogisticRegression
>>> check_estimator(LogisticRegression())
[...]