檢查是否已擬合#
- sklearn.utils.validation.check_is_fitted(estimator, attributes=None, *, msg=None, all_or_any=<built-in function all>)[來源]#
為估計器執行 is_fitted 驗證。
檢查估計器是否已擬合,方法是驗證是否存在已擬合的屬性 (以底線結尾),否則會使用給定的訊息引發
NotFittedError
。如果估計器沒有設定任何以底線結尾的屬性,它可以定義一個
__sklearn_is_fitted__
方法,該方法返回一個布林值,以指定估計器是否已擬合。有關如何使用此 API 的範例,請參閱 __sklearn_is_fitted__ 作為開發人員 API。如果沒有傳遞
attributes
,如果估計器是無狀態的,則此函數將通過。估計器可以通過設定requires_fit
標籤來指示它是無狀態的。有關更多資訊,請參閱 估計器標籤。請注意,如果傳遞了attributes
,則會忽略requires_fit
標籤。- 參數:
- estimator估計器實例
執行檢查的估計器實例。
- attributesstr、str 列表或元組,預設值=None
屬性名稱,以字串或字串的列表/元組形式給定。例如:
["coef_", "estimator_", ...], "coef_"
如果為
None
,則當存在一個以底線結尾且不以雙底線開頭的屬性時,則認為estimator
已擬合。- msgstr,預設值為 None
預設的錯誤訊息為:「此 %(name)s 實例尚未擬合。請先使用適當的參數呼叫 'fit' 來擬合此估計器。」
對於自訂訊息,如果訊息字串中存在「%(name)s」,則會將其替換為估計器的名稱。
例如:「估計器 %(name)s 必須先擬合才能進行稀疏化」。
- all_or_any可呼叫對象,{all, any},預設值為 all
指定是否所有或任何給定的屬性都必須存在。
- 拋出:
- TypeError
如果估計器是一個類別或不是估計器實例
- NotFittedError
如果找不到屬性。
範例
>>> from sklearn.linear_model import LogisticRegression >>> from sklearn.utils.validation import check_is_fitted >>> from sklearn.exceptions import NotFittedError >>> lr = LogisticRegression() >>> try: ... check_is_fitted(lr) ... except NotFittedError as exc: ... print(f"Model is not fitted yet.") Model is not fitted yet. >>> lr.fit([[1, 2], [1, 3]], [1, 0]) LogisticRegression() >>> check_is_fitted(lr)