Python で r 二乗を計算する方法 (例付き)
R2 は、多くの場合R2と書かれ、線形回帰モデルの予測子変数によって説明できる応答変数の分散の割合です。
R 二乗の値は 0 から 1 まで変化します。ここで、
- 0 は、応答変数が予測変数によってまったく説明できないことを示します。
- 1 は、応答変数が予測変数によって誤差なく完全に説明できることを示します。
次の例は、Python で回帰モデルの R 2を計算する方法を示しています。
例: Python で R 二乗を計算する
次のパンダ データフレームがあるとします。
import pandas as pd #createDataFrame df = pd. DataFrame ({' hours ': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4, 3, 6], ' prep_exams ': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4, 3, 2], ' score ': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90, 75, 96]}) #view DataFrame print (df) hours prep_exams 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 11 3 3 75 12 6 2 96
sklearnのLinearRegression()関数を使用して回帰モデルを近似し、 score()関数を使用してモデルの R 二乗値を計算できます。
from sklearn.linear_model import LinearRegression
#initiate linear regression model
model = LinearRegression()
#define predictor and response variables
x, y = df[[" hours ", " prep_exams "]], df. score
#fit regression model
model. fit (x,y)
#calculate R-squared of regression model
r_squared = model. score (x,y)
#view R-squared value
print (r_squared)
0.7175541714105901
モデルの R 二乗は0.7176であることがわかります。
これは、試験の得点のばらつきの71.76%が、勉強時間と受けた模擬試験の数によって説明できることを意味します。
必要に応じて、この R 二乗値を、異なる予測変数セットを使用した別の回帰モデルと比較できます。
一般に、モデル内の予測変数のセットが応答変数の変動をうまく説明できることを意味するため、R 二乗値が高いモデルが好まれます。
関連: 適切な R 二乗値とは何ですか?
追加リソース
次のチュートリアルでは、Python で他の一般的な操作を実行する方法について説明します。
Python で単純な線形回帰を実行する方法
Python で重回帰を実行する方法
Python で回帰モデルの AIC を計算する方法