檢查是否已擬合#

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)