파이썬 회귀선 seaborn 패키지로 쉽게 그리는 방법은?!

2021. 9. 2. 17:22

통계학이나 머신러닝에서 가장 먼저 다루는 모델은 단순회귀분석이다. 이해하기 쉬워 모델을 만들고 평가하는 과정을 알기에 좋기 때문이다. 자료의 증가, 감소 추세를 확인하기에도 회귀분석은 유용하다. 그래서 R의 ggplot에서는 산점도에 회귀분석 그래프를 그려주는 기능도 있다. 파이썬의 matplotlib에서는 이 기능이 없어서 좀 아쉽다. 하지만 seaborn에서 ggplot만큼 강력하게 회귀분석 그래프를 그릴 수가 있다.


오늘은 파이썬 회귀분석 그래프 그리기, seaborn 이용하는 방법에 대해서 알아보도록 하겠다.


파이썬 회귀선

 

 

단순회귀분석을 하는 방법은 여러가지가 있다. statsmodel, 싸이킷런 패키지에서도 가능하다. 통계적으로 다양한 지표들을 확인하고 싶다면 statsmodel패키지가 좋다. 이전 포스팅에서 scikit-learn패키지를 이용해서, 회귀분석을 하는 내용에 대해서 다뤄었으니 관심있다면 참고하기 바란다.

 

seaborn에서 회귀분석 그래프를 그리기 위해서는 lmplot이라는 함수를 이용한다. 이전 포스팅에서 다루었던 아파트 매매가 데이터를 가지고, 단순회귀분석 그래프를 그려보았다. x축, y축, 데이터 프레임을 지정하면 쉽게 그릴 수 있다.

sns.lmplot(x="size", y="price", data=df, line_kws={'color':"red"})

 

회귀분석 그래프

 

 

회귀선의 기본 색상이 파란색인데, 잘 구분되지 않아 빨간색으로 그려보았다. line_kws로 회귀선에 대한 파라미터를 바꿀 수 있다.

 

데이터가 중복되어 하나의 점에 얼마나 많은 데이터가 있는지 알 수 없다면, x_jitter 또는 y_jitter옵션을 사용하면 된다. 데이터를 상하 좌우로 흩어줘서 한 곳에 얼마나 많은 데이터가 있는지 쉽게 파악할 수 있다.

sns.lmplot(x="size", y="price", data=df, line_kws={'color':"red"}, scatter_kws={'edgecolor':"white"}, x_jitter=.9)

 

회귀분석 jitter 옵션 사용

 

 

점들이 잘 구분이 가지 않아, scatter_kws로 점의 테두리를 흰색으로 지정하였다. scatter_kws로 점의 파라미터를 바꿀 수 있다.

 

입력변수로 order를 입력하면, 해당 차원으로 회귀분석 그래프를 그릴 수 있다. 2차원, 3차원의 회귀분석 그래프를 보여준다. 쥬피터 노트북의 interact 모듈과 이용하면, 쉽게 다양한 회귀분석 그래프를 그려볼 수 있다.

from ipywidgets import interact

def lm_plot(x):
    sns.lmplot(x="size",
               y="price",
               data=df,
               order = x,
               line_kws={'color':"red"}, scatter_kws={'edgecolor':"white"})
    
interact(lm_plot, x=2)

 

파이썬 회귀분석 interact 함수 사용, 다차원 회귀분석

 

 

이 외에도 여러가지 유용한 옵션(?)들이 있다. 위의 데이터처럼 아웃 라이어가 있는 경우, robust=True라고 입력하면 아웃라이어를 제거하고 회귀분석 그래프를 그려준다. 로지스틱 회귀분석 그래프도 가능하다.

logistic=True라고 입력하면 로지스틱 회귀분석 그래프를 그릴 수 있다.

그래프에 표시되는 신뢰구간을 제거하고 싶다면, ci=None이라고 입력하면 된다.

 

col에 범주형 변수를 지정하면, 범주형 변수값에 따른 회귀분석 그래프도 그려준다. hue에 범주형 변수를 입력하면 하나의 그래프에서 비교할 수 있다.

pairplot과 jointplot에서도 kind="reg"옵션을 주어 회귀분석 그래프를 그려볼 수 있다.

잔차도도 그릴 수 있다. residplot이라는 함수를 이용하면, 아래와 같이 잔차도를 보여준다.

sns.residplot(x="size",
           y="price",
           data=df,
           robust=True,
           line_kws={'color':"red"}, scatter_kws={'edgecolor':"white"})

 

잔차도

 

 

오늘은 이렇게 파이썬 회귀분석 그래프 그리기, seaborn을 이용하는 방법에 대해서 알아보았다. 단순회귀분석 뿐만 아니라 여러가지 형태의 회귀분석 그래프를 그릴 수 있어 유용하다. seaborn은 matplotlib보다 데이터 분석에 특화된 문법으로 사용하기가 용이하다. seaborn을 이용하여 회귀분석 그래프를 그리는 방법에 대해서 더 자세히 알고 싶다면, seaborn 튜토리얼 페이지를 참조해보자.

댓글()