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
,使得測試多個估算器更容易。檢查分為以下幾類
API 檢查:一組檢查,以確保與 scikit-learn 的 API 相容性。請參考 https://scikit-learn.dev.org.tw/dev/developers/develop.html,這是 scikit-learn 估算器的要求。
legacy:一組檢查,會逐漸歸類到其他類別中。
- 參數:
- 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()) [...]