from evalml.exceptions import MethodPropertyNotFoundError
from evalml.pipelines.components import ComponentBase
class Estimator(ComponentBase):
    """A component that fits and predicts given data"""
    def predict(self, X):
        """Make predictions using selected features.
        Args:
            X (pd.DataFrame) : features
        Returns:
            pd.Series : estimated labels
        """
        try:
            return self._component_obj.predict(X)
        except AttributeError:
            raise MethodPropertyNotFoundError("Estimator requires a predict method or a component_obj that implements predict")
    def predict_proba(self, X):
        """Make probability estimates for labels.
        Args:
            X (pd.DataFrame) : features
        Returns:
            pd.DataFrame : probability estimates
        """
        try:
            return self._component_obj.predict_proba(X)
        except AttributeError:
            raise MethodPropertyNotFoundError("Estimator requires a predict_proba method or a component_obj that implements predict_proba")
    @property
    def feature_importances(self):
        try:
            return self._component_obj.feature_importances_
        except AttributeError:
            raise MethodPropertyNotFoundError("Estimator requires a feature_importances property or a component_obj that implements feature_importances_")