본문 바로가기

파이썬 통계 분석

[python]선형 회귀 모델 구현해 보기(1)

반응형

python 선형회귀모델 구현하기

 

 

 

파이썬 선형회귀모델 구현!

 

import matplotlib.pyplot as plt
import pandas as pd
from sklearn.linear_model import LinearRegression

 

선형 회귀 모델을 구형하기 위하여 필요한 모듈을 import 한다. 

데이터 처리를 위한 pandas를 import 한다.

선형 회귀 모델을 구현하기 위하여 sklearn.linear_model 에서 LinearRegression을 import 한다. 

 

dataset = pd.read_csv("example1.csv")

 

pandas의 read_csv 명령어를 이용해 분석하고자 하는 파일을 불러와서 dataset이라는 변수에 저장한다. 

분석하고자 하는 csv 파일은 python 파일과 같은 폴더에 위치하고 있어야 한다. 

만약 다른 폴더에 위치하고 있다면 정확한 위치 경로를 기입해야 한다. 

 

dataset.head()

분석하고자 하는 dataset의 상위 5번까지를 확인해 본다. 이 dataset은 근무시간에 따른 실적을 나타내고 있다. 이 데이터를 선형 회귀 모델을 통하여 분석하여 근무시간에 따른 실적을 예측해 볼 수 있다. 우리가 예측하고자 하는 값인 실적은 종속 변수이며, 종속 변수(실적)에 영향을 미치는 변수인 근무시간은 독립 변수이다.

 

X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, -1].values
X, y

 

dataset을 독립변수 X와 종속변수 y로 구분한다. 앞서 설명하였듯이 이 dataset의 종속 변수는 실적이며, 독립 변수는 근무시간이다. pandas의 iloc을 이용하여 독립변수 X, 종속변수 y를 설정한다. 독립 변수 X는 2차원 배열을 나타내며, 종속변수 y는 1차원 배열을 나타낸다. 

 

reg = LinearRegression()
reg.fit(X, y)

 

sklearn의 LinearRegression()을 reg라는 객체로 만든다. 그리고 reg.fit을 이용하여 독립변수 X, 종속 변수 y를 학습시킨다. 이렇게 학습시키면 dataset의 선형 회귀 모델이 저장된다. 

 

y_pred = reg.predict(X)
y_pred

 

독립변수 X를 이용하여 학습된 reg 모델을 통해 y 값을 예측하여 y-pred에 저장한다. 예측을 하기 위하여 reg.predict라는 명령어를 사용한다. 예측한 값인 y-pred를 출력하여 보면 실제 y 값과 비슷한 것을 확인할 수 있다.  예를 들어 근무시간 3시간은 실제 실적(X)은 3인데, 예측 실적(Y-predic)은 3.13390929 임을 확인할 수 있다.  

 

plt.rcParams['font.family'] = 'HYnamM'
plt.scatter(X, y, color="blue")
plt.plot(X, y_pred, color="green")
plt.title("근무시간에 따른 실적", )
plt.xlabel("근무시간")
plt.ylabel("실적")
plt.show()

 

 

근무시간(X)에 따른 실제 실적(y)과 예측 결과(y-pred)를 비교하기 위하여 plt를 이용하여 시각화해본다. 근무시간에 따른  y는 scatter를 이용하여 점으로 표시하였고, y-pred는 선으로 표시하였다. 회귀 모델을 이용한 예측 값이 실제 값과 비교적 비슷한 곳에 위치함을 알 수 있다.  

 

print("8시간 공부했을 때 예상 실적:", reg.predict([[8]]))

 

reg.predict([[8]]) 명령어를 통해 8시간 동안 공부했을 때의 예상 실적을 알아본다. 이 때 학습 모델의 X 값이 2차원 형태였기 떄문에 [[8]]과 같이 2차원 형태로 값을 넣어 준다.  

 

reg.coef_ #기울기(m)

reg.intercept_ # y 절편(b)

 

회귀식을 구하기 위하여 위 명령어를 통해여 기울기와 y절편을 구한다. 이를 통해 구한 회귀식은 y = 0.0125X + 0.0950임을 알 수 있다. 

반응형