AttributeError: el objeto LinearRegression no tiene el atributo ‘coef_’

He estado intentando ajustar estos datos mediante una Regresión lineal, siguiendo un tutorial sobre bigdataexaminer. Todo funcionaba bien hasta este punto. Importé LinearRegression desde sklearn e imprimí el número de coeficientes muy bien. Este fue el código antes de intentar capturar los coeficientes de la consola.

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() 

Después de configurar todo esto, ejecuté el siguiente comando y me devolvió el resultado correcto:

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

Sin embargo, ahora, si alguna vez trato de imprimir esta misma línea de nuevo, o uso ‘lm.coef_’, me dice que coef_ no es un atributo de LinearRegression, justo después de que lo usé con éxito, y no toqué ninguno de El código antes de que lo intentara de nuevo.

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

El atributo coef_ se crea cuando se llama al método fit() . Antes de eso, quedará indefinido:

 >>> 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)  in () 7 8 lm = LinearRegression() ----> 9 lm.coef_ AttributeError: 'LinearRegression' object has no attribute 'coef_' 

Si llamamos a fit() , se definirán los coeficientes:

 >>> 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]) 

Mi conjetura es que de alguna manera se olvidó de llamar a fit() cuando ejecutó la línea problemática.