(1) 모델을 구성하는 파라미터를 어떻게 찾을까?
데이터를 모두 직선에 대입
- 찾고 싶은건 a와 b
문제를 벡터와 행렬로 표현
행렬로 정리
를 찾을 수 있다
모델 평가 : 의 합
import pandas as pd
data = {'x' : [1,2,3,4,5],'y':[1,3,4,6,5]}
df = pd.DataFrame(data)
df
x y
0 1 1
1 2 3
2 3 4
3 4 6
4 5 5
import statsmodels.formula.api as smf
# "y ~ x" -> y = ax + b
lm_model = smf.ols(formula="y ~ x", data = df).fit()
lm_model.params
# Intercept -> 절편, x -> 기울기
Intercept 0.5
x 1.1
dtype: float64
4) seaborn을 이용해서 plot
import matplotlib.pyplot as plt
import seaborn as sns
sns.lmplot(x='x',y='y',data=df)
plt.show();
resid = lm_model.resid
# 잔차 확인
0 -0.6
1 0.3
2 0.2
3 1.1
4 -1.0
dtype: float64
# numpy로 직접 결정계수 계산
import numpy as np
mu = np.mean(df.y)
y = df.y
yhat = lm_model.predict()
np.sum((yhat - mu)**2 / np.sum((y - mu)**2))
# 0.8175675675675671
# 간단하게 구할 수도 있다
lm_model.rsquared
# 0.8175675675675677