web-dev-qa-db-ja.com

AttributeError:LinearRegressionオブジェクトに属性「coef_」がありません

Bigdataexaminerのチュートリアルに従って、線形回帰によりこのデータを近似しようと試みました。この時点まではすべて正常に機能していました。 LinearRegressionを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_'
11
Destroxia

_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()を呼び出すのを忘れていたようです。

15
jakevdp