만약 주택의 넓이와 가격이라는 데이터가 있고 주택가격을 예측한다면?
=> 학습데이터에 라벨이 있으므로 지도학습이고, 주택 가격을 연속된 값으로 예측하는 것이므로 회귀(Regression)문제임.
OLS : Ordinary Linear Least Square
Y = AX를 풀어서 구함
n by n 매트릭스가 아닌경우 그냥 트랜스포즈된걸 곱함.(곱해서 n by n 으로 사이즈 맞춰주려고)
import pandas as pd
import statsmodels.formula.api as smf
data = {'x' : [1, 2, 3, 4, 5], 'y':[1, 3, 4, 6, 5]}
df = pd.DataFrame(data)
lm_model = smf.ols(formula='y ~ x', data=df).fit()
# 'y ~ x' : y=ax+b
lm_model.params
# output :
Intercept 0.5
x 1.1
dtype: float64
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
plt.figure(figsize=(12,10))
sns.lmplot(x='x', y='y', data=df);
plt.xlim([0, 5])
resid = lm_model.resid
resid
# output :
0 -0.6
1 0.3
2 0.2
3 1.1
4 -1.0
초록선이 평균 (mu)
y_hat은 예측된 값
예측 값과 실제 값(y)가 일치하면 결정계수는 1이 됨(즉, 결정계수가 높을 수록 좋은 모델)
import numpy as np
mu = np.mean(df['y'])
y_hat = lm_model.predict()
np.sum((y_hat -mu) 2) / np.sum((y - mu) 2)
lm_model.rsquared
sns.distplot(resid, color='black')