단순 선형 회귀 사용법
- y = ax + b
- 학습의 결과로 알 수 있는건 a와 b
- a = 리스트, b = 숫자로 구성되어 있다
- y = a1x1 + a2x2 + ax3x3 + b 일수도 있기에 리스트로 들어가진다
- 모델 불러오고 데이터 정리해주고 fit 해주면 학습끝
자료가져오기
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style='darkgrid')
rng = np.random.RandomState(1)
X = 10 * rng.rand(50)
y = 2 * X - 5 + rng.randn(50)
X, y
from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
X.shpae
=> (50,)
데이터준비
X = X.reshape(50,1)
X.shpae
=> (50.1)
모델 학습
- Cost를 계산하고 경사의 반대로 weight를 업데이트 해가며 0까지 반복한다.
- fit 해주면 끝
lin_reg.fit(X,y)
모델 학습 확인
.Coef_ = 학습 결과 지정한 최적의 a 값
.intercept_ = 학습 결과 지정한 최적의 b 값
y_pred = lin_reg.predict(X)
y_pred
plt.scatter(X,y)
plt.scatter(X,y_pred, c='r')
plt.show()
print(lin_reg.coef_)
print(lin_reg.intercept_)
.score = 모델 평가하기
- score를 제일 많이 사용한다.
- 모델에 종속된 method를 통해서 평가
- 외부 평가 라이브러리도 있다(R2_score, RMSE, MAE 등)
lin_reg.scroe(X,y)
r2_score(y, y_pred)
점수확인
- 0 ~ 1 값 1에 가까울수록 좋다!
- 0.97이 나왔다고 해서 잘나왔다고 생각하면 함정
- 무슨 정보냐에 따라 좋을수도 나쁠수도..
ex) 자율주행인데 0.98이면..? 불가
사용법 총정리
- 5줄이면 끝나기에 코드보단 이거 안의 장단점 특징을 배우는대 시간 사용하기
from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X,y)
lin_reg.score(X,y)
y_pred = lin_reg.predict(X)