AttributeError: объект LinearRegression не имеет атрибута ' coef '
Я пытался подогнать эти данные с помощью линейной регрессии, следуя учебнику по bigdataexaminer. До этого момента все шло прекрасно. Я импортировал линейную регрессию из sklearn и напечатал количество коэффициентов просто отлично. Это был код, прежде чем я попытался схватить коэффициенты с консоли.
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()
После того, как я все это настроил, я запустил следующую команду, и она вернула правильный вывод:
In [68]: print('Number of coefficients:', len(lm.coef_)
Number of coefficients: 13
Однако теперь, если я когда-нибудь попытаюсь напечатать эта же линия снова, или используйте ' lm.coef_', он говорит мне, что coef_ не является атрибутом LinearRegression, сразу после того, как я только что успешно использовал его, и я не трогал ни одного кода, прежде чем попробовать его снова.
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 ответ:
Атрибут
coef_
создается при вызове методаfit()
. До этого он будет неопределенным:>>> 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_'
Если мы вызовем
fit()
, то коэффициенты будут определены:>>> 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])
Я предполагаю, что каким-то образом вы забыли позвонить
fit()
, когда запустили проблемную линию.