머신러닝 선형회귀분석 실습
1. 사용할 라이브러리 설치
2. 데이터 확인 (seaborn tips)
3. 선형회귀 모델 훈련
4. 모델 평가
1. 라이브러리 설치
우선 사용할 라이브러리를 모두 import
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import sklearn # scikit-learn 말고 이렇게 적어야 함.
라이브러리가 없으면 pip install 라이브러리명 < 이렇게 설치해줘야함.
2. 데이터 확인
실습에 활용할 데이터는 Seaborn 라이브러리의 tips 데이터
주제) 해당 데이터에 대해 total_bill (X) 당 얼마의 tip (Y)를 받을 수 있을 지 예측해보자.
모델을 훈련하기에 앞서, 두 컬럼의 상관관계 분포를 산점도로 확인해보았다.
양의 상관관계를 가진 것을 확인 --> 선형 회귀분석을 진행해도 된다고 판단하였다.
3. 선형회귀 모델 훈련
자주 쓰는 함수
- sklearn.linear_model.LinearRegression : 선형회귀 모델 클래스
- coef_: 회귀 계수(=가중치)
- intercept: 편향(bias)
- fit: 데이터 학습
- predict: 데이터 예측
처음에 scikit-learn 라이브러리를 import 했었는데, 그 중 linear_model의 LinearRegression 클래스를 사용할 예정이다.
해당 클래스를 import 하여 변수에 저장해두고 분석 모델로 사용해야한다.
from sklearn.linear_model import LinearRegression
model_lr = LinearRegression() #model_lr은 변수명
훈련할 모델에 넣어줄 데이터를 변수에 넣어주고, fit 함수를 사용해 훈련을 진행한다.
x = tips_df[['total_bill']]
y = tips_df[['tip']]
model_lr.fit(x=x, y=y)
왼쪽 x는 넣어줘야하는 값, 오른쪽 x는 위에 설정한 변수명임.
DataFrame[] : Series 형
DataFrame[[]] : DataFrame 형, 훈련시킬 땐 [[]] 써야함.
Y = w1X + w0의 식으로 선형회귀 진행
w1 = model_lr.coef_[0][0]
w0 = model_lr.intercept_[0]
print(f'y = {w1:.2f}x + {w0:.2f}')
결과 해석
--> 전체 금액이 $1 오를 때마다 팁이 $0.11추가된다.
이 관계를 바탕으로 예측 데이터를 predict 함수로 생성해준다.
실제 데이터의 경우 tips_df의 tip 칼럼이 된다.
y_true = tips_df['tip']
y_pred = model_lr.predict(tips_df[['total_bill']])
이 때 만든 예측 데이터를 tips_df에 칼럼으로 추가해준 후 위에 보았던 산점도에 시각화할 수 있다.
tips_df['pred'] = y_pred_tips
sns.lineplot(data = tips_df, x = 'total_bill', y = 'pred', color = 'red')
4. 선형회귀 모델 평가
metrics 에서 mse와 rscore 값을 구해줄 함수를 import 하여 실제 데이터와 예측 데이터를 넣은 후 모델평가를 진행한다.
from sklearn.metrics import mean_squared_error, r2_score
print(mean_squared_error(y_true,y_pred_))
print(r2_score(y_true,y_pred))
해당 모델의 MSE가 1이 나왔다. 하지만, y값 total_bill과 tips의 단위가 다르기 때문에 정확한 평가를 하기 어렵다.
rscore의 경우 분야마다 기준이 다른데, 사회/문학/경제 분야는 40이면 좋다고 평가한다.
여기서는 45로 너무 낮게 나왔다. total_bill 대신 다른 칼럼들에 대해 변수 추가를 하여 다중선형회귀로 다시 분석해야한다.
'TIL > 머신러닝' 카테고리의 다른 글
머신러닝 - 다중 로지스틱회귀 실습 (0) | 2024.08.13 |
---|---|
머신러닝 - 로지스틱회귀 실습 (0) | 2024.08.13 |
머신러닝 - 로지스틱회귀 이론 (0) | 2024.08.12 |
머신러닝 - 다중 선형회귀 이론, 실습 (0) | 2024.08.12 |
머신러닝 - 선형회귀 이론 (0) | 2024.08.08 |