Scikit-learn モデルから回帰係数を抽出する方法
次の基本構文を使用して、Python の scikit-learn で構築された回帰モデルから回帰係数を抽出できます。
p.d. DataFrame ( zip ( X.columns , model.coef_ ))
次の例は、この構文を実際に使用する方法を示しています。
例: Scikit-Learn モデルから回帰係数を抽出する
クラスの 11 人の生徒が学習した時間、受けた予備試験の数、および最終試験の成績に関する情報を含む次のパンダ データフレームがあるとします。
import pandas as pd
#createDataFrame
df = pd. DataFrame ({' hours ': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4],
' exams ': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4],
' score ': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90]})
#view DataFrame
print (df)
hours exam score
0 1 1 76
1 2 3 78
2 2 3 85
3 4 5 88
4 2 2 72
5 1 2 69
6 5 1 94
7 4 1 94
8 2 0 88
9 4 3 92
10 4 4 90
次のコードを使用すると、時間と試験を予測変数として、スコアを応答変数として使用して重線形回帰モデルを近似できます。
from sklearn. linear_model import LinearRegression
#initiate linear regression model
model = LinearRegression()
#define predictor and response variables
x, y = df[[' hours ', ' exams ']], df. score
#fit regression model
model. fit (x,y)
次に、次の構文を使用して、時間と試験の回帰係数を抽出できます。
#print regression coefficients
p.d. DataFrame ( zip ( X.columns , model.coef_ ))
0 1
0 hours 5.794521
1 exams -1.157647
結果から、モデル内の 2 つの予測子変数の回帰係数がわかります。
- 時間の係数: 5.794521
- 試験用係数:-1.157647
必要に応じて、次の構文を使用して回帰モデルから元の値を抽出することもできます。
#print intercept value
print (model. intercept_ )
70.48282057040197
これらの各値を使用して、近似回帰モデルの方程式を書くことができます。
スコア = 70.483 + 5.795 (時間) – 1.158 (試験)
次に、この方程式を使用して、勉強に費やした時間数と受けた模擬試験の数に基づいて、生徒の最終試験の成績を予測できます。
たとえば、3 時間勉強して 2 つの予備試験を受けた学生は、最終成績85.55を取得する必要があります。
- スコア = 70.483 + 5.795 (時間) – 1.158 (試験)
- スコア = 70.483 + 5.795(3) – 1.158(2)
- スコア = 85.55
関連: 回帰係数の解釈方法
追加リソース
次のチュートリアルでは、Python で他の一般的な操作を実行する方法について説明します。
Python で単純な線形回帰を実行する方法
Python で重回帰を実行する方法
Python で回帰モデルの AIC を計算する方法