Scikit-learn から回帰モデルの概要を取得する方法


Python でscikit-learnを使用して作成された回帰モデルの概要を抽出したい場合がよくあります。

残念ながら、scikit-learn は一般に予測目的でのみ使用されるため、回帰モデルの概要を分析するための組み込み関数はあまり提供されていません。

したがって、Python で回帰モデルの概要を取得したい場合は、2 つのオプションがあります。

1. scikit-learn の限定された機能を使用します。

2.代わりに統計モデルを使用します。

次の例は、次の pandas DataFrame で各メソッドを実際に使用する方法を示しています。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' x1 ': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4],
                   ' x2 ': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4],
                   ' y ': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90]})

#view first five rows of DataFrame
df. head ()

       x1 x2 y
0 1 1 76
1 2 3 78
2 2 3 85
3 4 5 88
4 2 2 72

方法 1: Scikit-Learn から回帰モデルの概要を取得する

次のコードを使用すると、scikit-learn を使用して重線形回帰モデルを近似できます。

 from sklearn. linear_model import LinearRegression

#initiate linear regression model
model = LinearRegression()

#define predictor and response variables
x, y = df[[' x1 ', ' x2 ']], df. y

#fit regression model
model. fit (x,y)

次に、次のコードを使用して、モデルから回帰係数とモデルのR 二乗値を抽出できます。

 #display regression coefficients and R-squared value of model
print (model. intercept_ , model. coef_ , model. score (X, y))

70.4828205704 [5.7945 -1.1576] 0.766742556527

この出力を使用して、近似回帰モデルの方程式を書くことができます。

y = 70.48 + 5.79x 1 – 1.16x 2

モデルの R 2値が 76.67 であることもわかります。

これは、応答変数の変動の76.67%がモデル内の 2 つの予測変数によって説明できることを意味します。

この結果は有用ですが、モデルの全体的な F 統計量、個々の回帰係数の p 値、およびモデルがモデルにどの程度適合しているかを理解するのに役立つその他の有用な尺度はまだわかりません。データセット.データセット。

方法 2: Statsmodels から回帰モデルの概要を取得する

Python で回帰モデルの概要を抽出する場合は、 statsmodelsパッケージを使用するのが最適です。

次のコードは、このパッケージを使用して前の例と同じ重線形回帰モデルを近似し、モデルの概要を抽出する方法を示しています。

 import statsmodels. api as sm

#define response variable
y = df[' y ']

#define predictor variables
x = df[[' x1 ', ' x2 ']]

#add constant to predictor variables
x = sm. add_constant (x)

#fit linear regression model
model = sm. OLS (y,x). fit ()

#view model summary
print ( model.summary ())

                            OLS Regression Results                            
==================================================== ============================
Dept. Variable: y R-squared: 0.767
Model: OLS Adj. R-squared: 0.708
Method: Least Squares F-statistic: 13.15
Date: Fri, 01 Apr 2022 Prob (F-statistic): 0.00296
Time: 11:10:16 Log-Likelihood: -31.191
No. Comments: 11 AIC: 68.38
Df Residuals: 8 BIC: 69.57
Df Model: 2                                         
Covariance Type: non-robust                                         
==================================================== ============================
                 coef std err t P>|t| [0.025 0.975]
-------------------------------------------------- ----------------------------
const 70.4828 3.749 18.803 0.000 61.839 79.127
x1 5.7945 1.132 5.120 0.001 3.185 8.404
x2 -1.1576 1.065 -1.087 0.309 -3.613 1.298
==================================================== ============================
Omnibus: 0.198 Durbin-Watson: 1.240
Prob(Omnibus): 0.906 Jarque-Bera (JB): 0.296
Skew: -0.242 Prob(JB): 0.862
Kurtosis: 2.359 Cond. No. 10.7
==================================================== ============================

回帰係数と R 二乗値は scikit-learn によって計算されたものと一致しますが、回帰モデルには他にも大量の有用なメトリクスがあることに注意してください。

たとえば、個々の予測子変数の p 値を確認できます。

  • x 1の p 値 = 0.001
  • x 2の p 値 = 0.309

モデルの全体的な F 統計量、調整された R 二乗値、モデルAIC 値なども確認できます。

追加リソース

次のチュートリアルでは、Python で他の一般的な操作を実行する方法について説明します。

Python で単純な線形回帰を実行する方法
Python で重回帰を実行する方法
Python で回帰モデルの AIC を計算する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です