AttributeError: LinearRegression object has no attribute 'coef_'
Question: I've been attempting to fit this data by a Linear Regression, following a
tutorial on bigdataexaminer. Everything was working fine up until this point.
I imported LinearRegression from sklearn, and printed the number of
coefficients just fine. This was the code before I attempted to grab the
coefficients from the console.

    
    
    import numpy as np
    import pandas as pd
    import scipy.stats as stats
    import matplotlib.pyplot as plt
    import sklearn
    from sklearn.datasets import load_boston
    from sklearn.linear_model import LinearRegression
    
    boston = load_boston()
    bos = pd.DataFrame(boston.data)
    bos.columns = boston.feature_names
    bos['PRICE'] = boston.target
    
    X = bos.drop('PRICE', axis = 1)
    
    lm = LinearRegression()
    

After I had all this set up I ran the following command, and it returned the
proper output:

    
    
    In [68]: print('Number of coefficients:', len(lm.coef_)
    
    Number of coefficients: 13
    

However, now if I ever try to print this same line again, or use 'lm.coef_',
it tells me coef_ isn't an attribute of LinearRegression, right after I JUST
used it successfully, and I didn't touch any of the code before I tried it
again.

    
    
    In [70]: print('Number of coefficients:', len(lm.coef_))
    
    Traceback (most recent call last):
    
     File "<ipython-input-70-5ad192630df3>", line 1, in <module>
    print('Number of coefficients:', len(lm.coef_))
    
    AttributeError: 'LinearRegression' object has no attribute 'coef_'
    


Answer: The `coef_` attribute is created when the `fit()` method is called. Before
that, it will be undefined:

    
    
    >>> import numpy as np
    >>> import pandas as pd
    >>> from sklearn.datasets import load_boston
    >>> from sklearn.linear_model import LinearRegression
    
    >>> boston = load_boston()
    
    >>> lm = LinearRegression()
    >>> lm.coef_
    ---------------------------------------------------------------------------
    AttributeError                            Traceback (most recent call last)
    <ipython-input-22-975676802622> in <module>()
          7 
          8 lm = LinearRegression()
    ----> 9 lm.coef_
    
    AttributeError: 'LinearRegression' object has no attribute 'coef_'
    

If we call `fit()`, the coefficients will be defined:

    
    
    >>> lm.fit(boston.data, boston.target)
    >>> lm.coef_
    array([ -1.07170557e-01,   4.63952195e-02,   2.08602395e-02,
             2.68856140e+00,  -1.77957587e+01,   3.80475246e+00,
             7.51061703e-04,  -1.47575880e+00,   3.05655038e-01,
            -1.23293463e-02,  -9.53463555e-01,   9.39251272e-03,
            -5.25466633e-01])
    

My guess is that somehow you forgot to call `fit()` when you ran the
problematic line.

