192 lines
6.0 KiB
Python
192 lines
6.0 KiB
Python
|
"""
|
||
|
The :mod:`sklearn.exceptions` module includes all custom warnings and error
|
||
|
classes used across scikit-learn.
|
||
|
"""
|
||
|
|
||
|
__all__ = [
|
||
|
"NotFittedError",
|
||
|
"ConvergenceWarning",
|
||
|
"DataConversionWarning",
|
||
|
"DataDimensionalityWarning",
|
||
|
"EfficiencyWarning",
|
||
|
"FitFailedWarning",
|
||
|
"SkipTestWarning",
|
||
|
"UndefinedMetricWarning",
|
||
|
"PositiveSpectrumWarning",
|
||
|
"UnsetMetadataPassedError",
|
||
|
]
|
||
|
|
||
|
|
||
|
class UnsetMetadataPassedError(ValueError):
|
||
|
"""Exception class to raise if a metadata is passed which is not explicitly \
|
||
|
requested (metadata=True) or not requested (metadata=False).
|
||
|
|
||
|
.. versionadded:: 1.3
|
||
|
|
||
|
Parameters
|
||
|
----------
|
||
|
message : str
|
||
|
The message
|
||
|
|
||
|
unrequested_params : dict
|
||
|
A dictionary of parameters and their values which are provided but not
|
||
|
requested.
|
||
|
|
||
|
routed_params : dict
|
||
|
A dictionary of routed parameters.
|
||
|
"""
|
||
|
|
||
|
def __init__(self, *, message, unrequested_params, routed_params):
|
||
|
super().__init__(message)
|
||
|
self.unrequested_params = unrequested_params
|
||
|
self.routed_params = routed_params
|
||
|
|
||
|
|
||
|
class NotFittedError(ValueError, AttributeError):
|
||
|
"""Exception class to raise if estimator is used before fitting.
|
||
|
|
||
|
This class inherits from both ValueError and AttributeError to help with
|
||
|
exception handling and backward compatibility.
|
||
|
|
||
|
Examples
|
||
|
--------
|
||
|
>>> from sklearn.svm import LinearSVC
|
||
|
>>> from sklearn.exceptions import NotFittedError
|
||
|
>>> try:
|
||
|
... LinearSVC().predict([[1, 2], [2, 3], [3, 4]])
|
||
|
... except NotFittedError as e:
|
||
|
... print(repr(e))
|
||
|
NotFittedError("This LinearSVC instance is not fitted yet. Call 'fit' with
|
||
|
appropriate arguments before using this estimator."...)
|
||
|
|
||
|
.. versionchanged:: 0.18
|
||
|
Moved from sklearn.utils.validation.
|
||
|
"""
|
||
|
|
||
|
|
||
|
class ConvergenceWarning(UserWarning):
|
||
|
"""Custom warning to capture convergence problems
|
||
|
|
||
|
.. versionchanged:: 0.18
|
||
|
Moved from sklearn.utils.
|
||
|
"""
|
||
|
|
||
|
|
||
|
class DataConversionWarning(UserWarning):
|
||
|
"""Warning used to notify implicit data conversions happening in the code.
|
||
|
|
||
|
This warning occurs when some input data needs to be converted or
|
||
|
interpreted in a way that may not match the user's expectations.
|
||
|
|
||
|
For example, this warning may occur when the user
|
||
|
- passes an integer array to a function which expects float input and
|
||
|
will convert the input
|
||
|
- requests a non-copying operation, but a copy is required to meet the
|
||
|
implementation's data-type expectations;
|
||
|
- passes an input whose shape can be interpreted ambiguously.
|
||
|
|
||
|
.. versionchanged:: 0.18
|
||
|
Moved from sklearn.utils.validation.
|
||
|
"""
|
||
|
|
||
|
|
||
|
class DataDimensionalityWarning(UserWarning):
|
||
|
"""Custom warning to notify potential issues with data dimensionality.
|
||
|
|
||
|
For example, in random projection, this warning is raised when the
|
||
|
number of components, which quantifies the dimensionality of the target
|
||
|
projection space, is higher than the number of features, which quantifies
|
||
|
the dimensionality of the original source space, to imply that the
|
||
|
dimensionality of the problem will not be reduced.
|
||
|
|
||
|
.. versionchanged:: 0.18
|
||
|
Moved from sklearn.utils.
|
||
|
"""
|
||
|
|
||
|
|
||
|
class EfficiencyWarning(UserWarning):
|
||
|
"""Warning used to notify the user of inefficient computation.
|
||
|
|
||
|
This warning notifies the user that the efficiency may not be optimal due
|
||
|
to some reason which may be included as a part of the warning message.
|
||
|
This may be subclassed into a more specific Warning class.
|
||
|
|
||
|
.. versionadded:: 0.18
|
||
|
"""
|
||
|
|
||
|
|
||
|
class FitFailedWarning(RuntimeWarning):
|
||
|
"""Warning class used if there is an error while fitting the estimator.
|
||
|
|
||
|
This Warning is used in meta estimators GridSearchCV and RandomizedSearchCV
|
||
|
and the cross-validation helper function cross_val_score to warn when there
|
||
|
is an error while fitting the estimator.
|
||
|
|
||
|
.. versionchanged:: 0.18
|
||
|
Moved from sklearn.cross_validation.
|
||
|
"""
|
||
|
|
||
|
|
||
|
class SkipTestWarning(UserWarning):
|
||
|
"""Warning class used to notify the user of a test that was skipped.
|
||
|
|
||
|
For example, one of the estimator checks requires a pandas import.
|
||
|
If the pandas package cannot be imported, the test will be skipped rather
|
||
|
than register as a failure.
|
||
|
"""
|
||
|
|
||
|
|
||
|
class UndefinedMetricWarning(UserWarning):
|
||
|
"""Warning used when the metric is invalid
|
||
|
|
||
|
.. versionchanged:: 0.18
|
||
|
Moved from sklearn.base.
|
||
|
"""
|
||
|
|
||
|
|
||
|
class PositiveSpectrumWarning(UserWarning):
|
||
|
"""Warning raised when the eigenvalues of a PSD matrix have issues
|
||
|
|
||
|
This warning is typically raised by ``_check_psd_eigenvalues`` when the
|
||
|
eigenvalues of a positive semidefinite (PSD) matrix such as a gram matrix
|
||
|
(kernel) present significant negative eigenvalues, or bad conditioning i.e.
|
||
|
very small non-zero eigenvalues compared to the largest eigenvalue.
|
||
|
|
||
|
.. versionadded:: 0.22
|
||
|
"""
|
||
|
|
||
|
|
||
|
class InconsistentVersionWarning(UserWarning):
|
||
|
"""Warning raised when an estimator is unpickled with a inconsistent version.
|
||
|
|
||
|
Parameters
|
||
|
----------
|
||
|
estimator_name : str
|
||
|
Estimator name.
|
||
|
|
||
|
current_sklearn_version : str
|
||
|
Current scikit-learn version.
|
||
|
|
||
|
original_sklearn_version : str
|
||
|
Original scikit-learn version.
|
||
|
"""
|
||
|
|
||
|
def __init__(
|
||
|
self, *, estimator_name, current_sklearn_version, original_sklearn_version
|
||
|
):
|
||
|
self.estimator_name = estimator_name
|
||
|
self.current_sklearn_version = current_sklearn_version
|
||
|
self.original_sklearn_version = original_sklearn_version
|
||
|
|
||
|
def __str__(self):
|
||
|
return (
|
||
|
f"Trying to unpickle estimator {self.estimator_name} from version"
|
||
|
f" {self.original_sklearn_version} when "
|
||
|
f"using version {self.current_sklearn_version}. This might lead to breaking"
|
||
|
" code or "
|
||
|
"invalid results. Use at your own risk. "
|
||
|
"For more info please refer to:\n"
|
||
|
"https://scikit-learn.org/stable/model_persistence.html"
|
||
|
"#security-maintainability-limitations"
|
||
|
)
|