결정 계수 R 제곱

6980 단어 datascience
선의 '적합도'를 측정하기 위해 선형회귀분석을 할 때 결정계수(R제곱)를 계산할 수 있다. R 제곱은 모델이 상관관계를 얼마나 잘 설명하는지 측정할 수 있습니다. 여기에서 선형 모델과 기준선 모델에 의해 설명되는 분산의 백분율을 측정합니다(이 경우에는 단순히 대상의 평균값입니다).

간단한 예에서 시각화할 수 있습니다. 예를 들어 대상이 있는 경우 5일 동안 아이템의 판매 수와 라인을 맞추었습니다. 이제 우리는 순진한 예측과 비교하여 기본적으로 우리가 얼마나 잘 수행하는지 확인하고 싶습니다. 판매의 평균 가치를 계산합니다.

from sklearn.metrics import r2_score
import numpy as np
import matplotlib.pyplot as plt

# given target
y_true = [5, 10, 11, 16, 19]

# base line
y_mean = [np.mean(y_true) for i in range(len(y_true))]

# fit a line
from sklearn import linear_model
X = [1, 2, 3, 4, 5]
X = np.asarray(X).reshape(-1, 1)
Y = y_true
model = linear_model.LinearRegression()
model.fit(X, Y)

print(model.intercept_)
print(model.coef_[0])


모델_절편 = 2
model_coef = 3.4

# regression line
y_pred = [3.4*i+2 for i in range(1,(len(y_true))+1)]



# calculate R squared using formula
var_mean = sum([(y_true[i]-y_mean[i])**2 for i in range(len(y_true))])
var_pred = sum([(y_true[i]-y_pred[i])**2 for i in range(len(y_true))])
r2 = (var_mean-var_pred)/(var_mean)
print(r2)


0.9730639730639731

# calculate R squared using scikit learn
r2_score(y_true, y_pred)


0.9730639730639731

# calculate using pearson correlation
correlation = np.corrcoef(y_true, y_pred)[0][-1]
correlation**2


0.9730639730639731



이 예에서 회귀선은 평균값을 예측하는 것보다 97% 더 잘 설명했습니다.

좋은 웹페이지 즐겨찾기