web-dev-qa-db-fra.com

AttributeError: l'objet LinearRegression n'a pas d'attribut 'coef_'

J'ai essayé d'ajuster ces données par une régression linéaire, en suivant un tutoriel sur bigdataexaminer. Tout fonctionnait bien jusqu'à ce point. J'ai importé LinearRegression de sklearn et imprimé très bien le nombre de coefficients. C'était le code avant d'essayer de récupérer les coefficients de la 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()

Après avoir installé tout cela, j'ai exécuté la commande suivante et elle a renvoyé la sortie appropriée:

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

Number of coefficients: 13

Cependant, maintenant, si j'essaie d'imprimer à nouveau cette même ligne ou d'utiliser 'lm.coef_', cela me dit que coef_ n'est pas un attribut de LinearRegression, juste après que je l'ai utilisé avec succès et que je n'ai touché à aucun des le code avant de le réessayer.

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_'
11
Destroxia

L'attribut coef_ Est créé lorsque la méthode fit() est appelée. Avant cela, il ne sera pas défini:

>>> 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_'

Si nous appelons fit(), les coefficients seront définis:

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

Je suppose que vous avez en quelque sorte oublié d'appeler fit() lorsque vous avez exécuté la ligne problématique.

15
jakevdp