Source code for evalml.pipelines.components.estimators.regressors.linear_regressor
"""Linear Regressor."""
import pandas as pd
from sklearn.linear_model import LinearRegression as SKLinearRegression
from evalml.model_family import ModelFamily
from evalml.pipelines.components.estimators import Estimator
from evalml.problem_types import ProblemTypes
[docs]class LinearRegressor(Estimator):
    """Linear Regressor.
    Args:
        fit_intercept (boolean): Whether to calculate the intercept for this model.
            If set to False, no intercept will be used in calculations (i.e. data is expected to be centered).
            Defaults to True.
        n_jobs (int or None): Number of jobs to run in parallel. -1 uses all threads. Defaults to -1.
        random_seed (int): Seed for the random number generator. Defaults to 0.
    """
    name = "Linear Regressor"
    hyperparameter_ranges = {"fit_intercept": [True, False]}
    """{
        "fit_intercept": [True, False],
    }"""
    model_family = ModelFamily.LINEAR_MODEL
    """ModelFamily.LINEAR_MODEL"""
    supported_problem_types = [
        ProblemTypes.REGRESSION,
        ProblemTypes.TIME_SERIES_REGRESSION,
        ProblemTypes.MULTISERIES_TIME_SERIES_REGRESSION,
    ]
    """[
        ProblemTypes.REGRESSION,
        ProblemTypes.TIME_SERIES_REGRESSION,
        ProblemTypes.MULTISERIES_TIME_SERIES_REGRESSION,
    ]"""
    def __init__(self, fit_intercept=True, n_jobs=-1, random_seed=0, **kwargs):
        parameters = {
            "fit_intercept": fit_intercept,
            "n_jobs": n_jobs,
        }
        parameters.update(kwargs)
        linear_regressor = SKLinearRegression(**parameters)
        super().__init__(
            parameters=parameters,
            component_obj=linear_regressor,
            random_seed=random_seed,
        )
    @property
    def feature_importance(self):
        """Feature importance for fitted linear regressor."""
        return pd.Series(self._component_obj.coef_)