4

Ich habe versucht, diese Daten durch eine lineare Regression passen, nach einem Tutorial auf BigDataExaminer. Bis jetzt hat alles gut funktioniert. Ich habe LinearRegression von sklearn importiert und die Anzahl der Koeffizienten ausgedruckt. Das war der Code, bevor ich versuchte, die Koeffizienten von der Konsole zu holen.AttributeError: LinearRegression Objekt hat kein Attribut 'coef_'

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

Nachdem ich alle hatte dies einzurichten ich den folgenden Befehl lief, und es gab den richtigen Ausgang:

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

Number of coefficients: 13 

Aber jetzt, wenn ich jemals versuchen, diese gleiche Zeile erneut zu drucken, oder die Nutzung 'lm.coef_', es sagt mir, coef_ ist kein Attribut von LinearRegression, direkt nachdem ich es erfolgreich benutzt habe, und ich habe nichts vom Code berührt, bevor ich es noch einmal versuchte.

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

Wo nennen Sie die Fit-Methode? Mit nur dem Teil, den Sie freigegeben haben, kann len (lm.coef_) nicht drucken. – ayhan

+0

Ich habe nie eine Fit-Methode aufgerufen, aber ich kann Ihnen versprechen, das erste Mal, dass ich diese Zeile ausgeführt habe 'print (' Anzahl der Koeffizienten: ', len (lm.coef _)) 'es definitiv zurück 13. Ich bin mir nicht sicher, ob es ein Python 3 Problem oder was nicht, aber es druckte das erste Mal. – Destroxia

+0

@Destrexia Wenn Sie die Funktion nicht angepasst haben, wie ist ein Koeffizient ??? – user1157751

Antwort

5

coef_ Das Attribut wird erzeugt, wenn die fit() Methode aufgerufen wird. Vorher wird es nicht definiert werden:

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

Wenn wir fit() nennen, werden die Koeffizienten definiert werden:

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

Meine Vermutung ist, dass irgendwie vergessen haben fit() zu rufen, wenn Sie die problematische Linie lief.

+0

Danke, das schien das Problem zu beheben, obwohl ich mir nicht sicher bin, wie es beim ersten mal ohne die Passform geklappt hat. – Destroxia