seaborn을 이용하면 쉽게 회귀선을 그릴 수 있습니다. r의 ggplot만큼 강력한 기능이 많습니다. 여러 가지 옵션을 이용하면 다항 회귀선이나 로지스틱 회귀분석 그래프, 신뢰구간도 그릴 수 있습니다. 파이썬 회귀선 seaborn 패키지로 쉽게 그리는 방법을 알아보았습니다.

 

 

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

 

단순 회귀분석을 하는 방법은 여러 가지가 있습니다. statsmodel, 싸이킷런 패키지에서도 가능합니다. 통계적으로 다양한 지표들을 확인하고 싶다면 statsmodel패키지가 좋습니다. seaborn에서 회귀분석 그래프를 그리기 위해서는 lmplot이라는 함수를 이용합니다. 이전 포스팅에서 다루었던 아파트 매매가 데이터를 가지고, 단순 회귀분석 그래프를 그려보았습니다. x축, y축, 데이터 프레임을 지정하면 쉽게 그릴 수 있습니다.

 

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

 

seaborn-회귀선-그래프
회귀분석-그래프

 

회귀선의 기본 색상이 파란색인데, 잘 구분되지 않아 빨간색으로 그렸습니다. 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
회귀분석-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보다 데이터 분석에 특화된 문법으로 사용하기가 용이합니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기