본문 바로가기

Programming Language/Data & A.I. (데이터 & 인공지능 관련)

sns heatmap 씨본 히트맵 파악하기 (수치 표시, 폰트 사이즈 , 색깔 변경, 색상, 최대 최소 /cmap annot annot_kws , vmin)

반응형

오늘은 시각화 중 heatmap 시각화에 대해 글을 써보겠습니다.

물론 히트맵은 그 자체로도 이미 시각화하기 편하게 되어있지만, 그 효과를 배로 만들어주기 위해서는 확실히 여러 손질 작업이 필요한 것 같습니다. 여러 변수들이 내장되어있고 그 변수들을 충분히 지정해주고 변경해주어야 시각화 효과를 배가 시킬 수 있다고 생각합니다.

 오늘 제가 하려고 하는 시각화의 요약본이 밑에 두 그림에 나와있습니다. 

 

 

변환 전 기본
훨씬 더 눈에 잘 들어오도록 시각화 변환 후.

위의 사진에서 더 보기 편하게 아래 사진으로 시각화 편집 해보겠습니다↑

 

오늘은 제가 시각화 하던 예시로 바로 활용할 예정이라서 seaborn heatmap을 이용하시다가 코드가 좀 생각 안나시는 분에게 도움이 됐으면 좋겠습니다 :)

기본 시각화 모양

제가 사용한 기본 코드입니다. 밑에 포인트 포인트마다 수정할 때는 보기 편하게 그 부분의 코드만 올리겠습니다. 저는 딥러닝 모델 구축 후 시각화를 하다가 시각화를 사용하였기에 변수나 조건이 조금 다를 수 있음을 인지해주셨으면 좋겠습니다 :)

from sklearn.metrics import confusion_matrix
def plot_confusion_matrix(y=None,y_predict=None,classes=None,name=None):
    plt.figure(figsize=(10, 10))
    sns.heatmap(confusion_matrix(y,y_predict),xticklabels=classes, yticklabels=classes)
    plt.title(name)
    plt.show()
plot_confusion_matrix(y_validation,bow_predict_y_validation,encoder.classes_,'Validation accuracy CNN BOW')

제가 사용한 기본 코드입니다. 이 부분만 풀 코드로 올리고 밑에서부터는, 포인트 포인트마다 수정할 때는 보기 편하게 그 부분의 코드만 올리겠습니다. 특히 sns.heat맵을 자세히 보셔야할 것 같은데, (xticklabels=classes, yticklabels=classes) 부분은 기본 x와 y라벨 눈금선을 지정해준 것입니다.

저는 딥러닝 모델 구축 후 시각화를 하다가 시각화를 사용하였기에 변수나 조건이 조금 다를 수 있음을 인지해주셨으면 좋겠습니다 :)

위 기본 코드를 실행하면 나오는 seaborn 기본 heatmap.... 물론 예쁘긴(?) 하다.

물론 예뻐 보일수도 있겠지만, 사실 대칭점에 해당하는 가운데 해당하는 값이 너무 커서 오히려 우리가 보려고하는 원래 부분이 잘 안보이는 것 같습니다. 그렇기에 데이터 편집을 조금 해주고자 합니다.

 

1. 수치 표시 (annot =  )

#첫 코드에서 annot=True 추가
sns.heatmap(confusion_matrix(y,y_predict),xticklabels=classes, yticklabels=classes,
			annot=True)

annot을 추가했는데 .... 수치가 정확히 보이지 않는다 ㅠㅠ 그렇기에 사이즈 편집도 필요했다.

 

2. 수치 표시 사이즈 ( annot_kws = )

#첫 코드에서 annot_kws={'size':20} 추가
sns.heatmap(confusion_matrix(y,y_predict),xticklabels=classes, yticklabels=classes,
			annot=True, annot_kws={'size':20})

 

이제 수치가 조금 더 잘보이는 느낌이 듭니다.

 

3. 색상 변경 (cmap =)

#첫 코드에서 cmap="YlGnBu" 추가
sns.heatmap(confusion_matrix(y,y_predict),xticklabels=classes, yticklabels=classes,
			annot=True, annot_kws={'size':20}, cmap="YlGnBu")

칙칙한 컬러라고 생각이 들어서 제 느낌엔 컬러를 추가해야겠다고 생각이 들었습니다.

한결 산뜻해진(?) 나의 heatmap

 

 

다양한 컬러는 'seaborn cmap'에 대해서 검색해보고 원하는 컬러값을 입력하면 입맛대로 변경이 가능하다.

 

 

4. 최대 최소 기준점 변경 ( vmin=0, vmax=150 )

저의 그래프를 보면 아시겠지만, 값의 기준이 너무 차이가 많이 나서, 아무래도 heatmap의 가장 큰 장점을 살리지 못했습니다.  이걸 극복하기위해 오른쪽의 수치 기준 바를 제 임의로 최대 최소를 정해야겠다고 생각했습니다.

#첫 코드에서 cmap="YlGnBu" 추가
sns.heatmap(confusion_matrix(y,y_predict),xticklabels=classes, yticklabels=classes,
			annot=True, annot_kws={'size':20}, cmap="YlGnBu", vmin=0, vmax=150)

처음 히트맵 그래프보다 훨씬 장점을 잘 살릴 수 있게 변환

 

 

부족하지만 오늘도 여러분의 코딩에 도움이 되었으면 좋을 것 같아서, 티끌 코딩 글 작성해봅니다.

 

힘이 되었으면 좋겠습니다. 항상 건강 챙기시고 행복한 하루 되세요. -티끌 코딩 드림-

글 하단 '좋아요(하트)' 마우스 클릭 한번은 작성자에게 너무 큰 힘이 됩니다.

 

반응형