check_is_fitted#

sklearn.utils.validation.check_is_fitted(estimator, attributes=None, *, msg=None, all_or_any=<built-in function all>)[source]#

Perform is_fitted validation for estimator.

checks if the estimator is fitted by verifying the presence of fitted attributes (ending with a trailing underscore) and otherwise raises a NotFittedError with the given message.

If an estimator does not set any attributes with a trailing underscore, it can define a __sklearn_is_fitted__ method returning a boolean to specify if the estimator is fitted or not. See __sklearn_is_fitted__ as Developer API for an example on how to use the API.

Parameters:
estimatorestimator instance

Estimator instance for which the check is performed.

attributesstr, list or tuple of str, default=None

Attribute name(s) given as string or a list/tuple of strings Eg.: ["coef_", "estimator_", ...], "coef_"

If None, estimator is considered fitted if there exist an attribute that ends with a underscore and does not start with double underscore.

msgstr, default=None

The default error message is, “This %(name)s instance is not fitted yet. Call ‘fit’ with appropriate arguments before using this estimator.”

For custom messages if “%(name)s” is present in the message string, it is substituted for the estimator name.

Eg. : “Estimator, %(name)s, must be fitted before sparsifying”.

all_or_anycallable, {all, any}, default=all

Specify whether all or any of the given attributes must exist.

Raises:
TypeError

If the estimator is a class or not an estimator instance

NotFittedError

If the attributes are not found.

Examples

>>> 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)