check_is_fitted#

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 标签来指示其是无状态的。更多信息请参阅Estimator Tags。请注意,如果传递了 attributes 参数,则 requires_fit 标签将被忽略。

参数:
estimator估计器实例

对其执行检查的估计器实例。

attributes字符串、字符串列表或元组,默认值 None

以字符串或字符串列表/元组形式给出的属性名称。例如:["coef_", "estimator_", ...], "coef_"

如果为 None,则当估计器存在一个以一个下划线结尾且不以双下划线开头的属性时,该估计器被认为是已拟合的。

msg字符串,默认值 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)