선형 회귀 사용법

이주현·2023년 12월 10일
0

머신러닝

목록 보기
8/14

단순 선형 회귀 사용법

  • 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,)
#(50,) 은 1차원 -> (50,1)로 만들어서 사용해야한다

데이터준비

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
# y_pred == y햇
plt.scatter(X,y)
plt.scatter(X,y_pred, c='r') #모델이 예측한 결과
plt.show()
print(lin_reg.coef_) # 학습 결과 지정한 최적의 a값
print(lin_reg.intercept_) #학습 결과 지정한 최적의 b값

.score = 모델 평가하기

  • score를 제일 많이 사용한다.
  • 모델에 종속된 method를 통해서 평가
  • 외부 평가 라이브러리도 있다(R2_score, RMSE, MAE 등)
lin_reg.scroe(X,y) # 점수 -> 문제 X와 정답인 target y를 집어넣기

r2_score(y, y_pred) #정답(문제x), 예측결과

점수확인

  • 0 ~ 1 값 1에 가까울수록 좋다!
  • 0.97이 나왔다고 해서 잘나왔다고 생각하면 함정
  • 무슨 정보냐에 따라 좋을수도 나쁠수도..
    ex) 자율주행인데 0.98이면..? 불가

사용법 총정리

  • 5줄이면 끝나기에 코드보단 이거 안의 장단점 특징을 배우는대 시간 사용하기
from sklearn.linear_model import LinearRegression

#모델 빌드
lin_reg = LinearRegression() #모델빌드
lin_reg.fit(X,y) #모델학습(train)
lin_reg.score(X,y) #모델 평가
y_pred = lin_reg.predict(X) #모델 사용(추론, inference)
profile
Backend Delveloper

0개의 댓글