[부스트캠프 AI-Tech] 3주차 Day 1

LKM·2022년 2월 16일
0

✏️학습 정리


1-1. Welcome to Viz

  • 데이터 시각화
    • 데이터를 그래픽 요소로 매핑하여 시각적으로 표현
    • 요소: 목적, 독자, 데이터, 스토리, 방법, 디자인
    • 시각화는 100점이 없다!



1-2. 시각화의 요소

  • 데이터셋 종류

    • 정형 데이터: 일반적으로 csv, 가장 쉽게 시각화
    • 시계열 데이터: 시간 흐름에 따른 데이터
    • 지리/지도 데이터
    • 관계 데이터: 객체와 객체 간의 관계를 시각화
    • 계층적 데이터: 관계 중에서도 포함관계가 분명한 데이터
  • 데이터의 종류

    • 수치형
      • 연속형: 길이, 무게, 온도...
      • 이산형: 주사위 눈금, 사람 수 등....
    • 범주형
      • 명목형: 혈액형, 종교 등...
      • 순서형: 학년, 별점, 등급 등...
  • 마크와 채널

    • mark: 점, 선, 면으로 이루어진 데이터 시각화
    • channel: 마크를 변경할 수 있는 요소들 (ex. position, color...)
  • Pre-attentive Attribute (전주의적 속성)

    • 주의를 주지 않아도 인지하게 되는 요소
    • 동시에 사용하면 인지하기 어려움 (적절히 사용시 → 시각적 분리, visulal popout)



1-3. Mathplotlib

  • 기본 plot

    • Figure: 큰 틀, 서브 플롯 최소 1개 이상 추가
    • Ax: 서브 플롯 (여러개 생성 가능)
  • plot의 요소

    • 하나의 서브플롯에 여러 그래프 그리기 가능 (색상이 자동으로 구분됨)
    • 색을 직접 명시할 수 있다. (color 파라미터 이용)
    • 정보를 추가하기 위해 텍스트 사용 가능 (label 파라미터 이용)
    • ax의 특정 데이터 변경 —> .set_{}() 형태 (ex. ax.set_title(’제목’))
    • 특정 데이터: 제목(title), 축(ticks, ticklabels)...



2-1. Bar Plot 사용하기

  • Bar Plot

    • 직사각형 막대를 사용하여 데이터를 표현
    • 범주(category)에 따른 수치 값을 비교하기에 적합
    • 수직: x축(범주), y축(값), default —> .bar()
    • 수평: y축(범주), x축(값), 범주가 많을 때 적합 —> .barh()
  • 다양한 Bar Plot

    • Multiple Bar Plot
      1. plot을 여러개 그리는 방법
      2. 한 개의 plot에 동시에 나타내는 방법 (쌓아서, 겹쳐서, 이웃에 배치해서)
    • Stacked Bar Plot
      • 2개 이상의 그룹을 쌓아서 표현 (그룹의 순서는 항상 유지) —> bottom or left 파라미터 사용

    • Percentage Stacked Bar Chart
      • 전체에서 비율을 나타냄

    • Overlapped Bar Plot
      • 겹쳐서 만드는 plot

      • alpha 파라미터: 투명도 조정

    • Grouped Bar Plot
      • bar를 이웃되게 배치하는 방법

  • 정확한 Bar Plot
    • 실제 값과 그에 표현되는 그래픽으로 표현되는 잉크 양은 비례해야된다!
    • 더 정확한 정보 전달위해 정렬이 필수!
    • 여백과 공간만 조정해도 가독성 UP
    • 필요 없는 복잡함은 NO —> 3D는 최대한 지양
    • 오차 막대를 추가하여 Uncertainty 정보 추가 (errorbar)



2-2. Line Plot 사용하기

  • Line Plot

    • 연속적으로 변화하는 값을 점으로 나타내고 연결한 그래프
    • 시계열 분석에 특화
    • .plot()
    • 5개 이하의 선을 사용 추천 (그 이상은 가독성 하락)
    • Noise의 방해를 줄이기 위해 smoothing(ex. 이동평균) 사용
  • 정확한 Line Plot

    • 축을 0에 초점을 둘 필요 없음 (추세 보기가 목적)
    • 범위 조절하여 변화율 관찰 (.set_ylim(), .set_xlim() —> 축 범위 변경)
    • 규칙적인 간격의 데이터 아니라면 각 관측 값에 점으로 표시!
    • 보간
      • 점과 점 사이에 데이터가 없기에 이를 잇는 방법
      • 없는 데이터를 있다고 오해 가능
      • 일반적인 분석에서 지양
    • 이중축 사용
      1. 같은 시간 축에 대해 서로 다른 종류의 데이터 표현 —> .twinx()
        • 사용 지양
      2. 한 데이터에 대해 다른 단위 (ex. 파운드와 kg) —> .secondary_xaxis(), .secondary_yaxis()
        • 사용 OK
    • legend(범례)대신 annotation
      • 라인 끝 단에 레이블 추가

    • Min/Max, 원하는 점에 annotation
    • uncertainty 표현 (신뢰구간, 분산...)
  • 실습
    • 정 N각형이나 원을 그릴 수 있다. (x = np.sin(np.linespace(0, 2*np.pi, n) ...)
    • plot 요소: color, marker(점 종류), linestyle (선 종류)
    • MultipleLocator: 각 축에 대한 디테일한 정보
      • MultipleLocator(1) : 축 간격 1
    • x 값이 엇어도 그려지지만, x축 입력을 습관화 하자!



2-3. Scatter Plot 사용하기

  • Scatter Plot (산점도)
    • 점을 사용한 그래프, 두 feature간의 관계 확인

    • .scatter()

    • 점의 다양한 variation (2차원 데이터에서 N차원 데이터로 확장 가능)

      • color(색), marker(모양), size(크기)

    • 상관 관계 확인 (양의 상관관계 / 음의 상관관계 / 없음)

    • 그 외

  • 정확한 Scatter Plot
    • 점이 많아질수록 점의 부포 파악 어려움!
    • Overplotting
      • 투명도 조정: 점이 많이 모인 곳일수록 진해진다.
      • 지터링(jittering): 점의 위치를 약간씩 변경 (점들이 겹치지 않게)
      • 2차원 히스토그램: 히트맵을 사용하여 깔끔한 시각화
      • Contour Plot: 분포를 등고선을 사용하여 표현 (좁을수록 밀도 UP)
    • 인과 관계와 상관 관계는 다름!
    • 추세선을 사용하면 패턴 유추 가능 (2개 이상이면 가독성이 떨어짐)
    • Grid는 지양
profile
함께 자라기

0개의 댓글