[파이썬 머신러닝 완벽 가이드] 머신러닝의 개념, 넘파이, 판다스

2 분 소요

머신러닝의 개념

— “애플리케이션을 수정하지 않고도 데이터를 기반으로 패턴을 학습하고 결과를 추론하는 알고리즘 기법”

  • 현실세계의 매우 복잡한 업무와 규칙을 구현하려면 사람의 능력만으로 어플리케이션을 구현하기 어렵고 구현된 어플리케이션의 예측 정확성도 문제가 되는데 머신러닝을 활용하면 더 쉽게 접근이 가능하다.
  • 복잡한 문제를 데이터를 기반으로 숨겨진 패턴을 인지해 해결 ⇒ 예측과 추론

머신러닝의 분류

지도학습 (Supervised Learning)

— 명확한 결정값이 주어진 데이터를 학습 (데이터 레이블 필요)

  • 분류
  • 회귀
  • 시각/음성감지/인지

비지도학습 (Un-supervised Learning)

— 결정값이 주어지지 않는 데이터를 학습

  • 군집화 (클러스터링)
  • 차원 축소; 데이터가 가지고 있는 함축적 의미들을 추출

강화학습 (Reinforcement Learning)

머신러닝 기반의 예측 분석 (Predictive Analysis)

  • 데이터에 기반한 기존의 분석/예측 영역이 머신러닝 기반의 예측 분석으로 빠르게 재편되는 추세
  • 머신러닝을 통한 더욱 정확한 예측 및 빠른 의사결정 도출로 데이터에 감춰진 새로운 의미와 인사이트를 발굴해 전에 없던 이익으로 연결시키고 있다.

머신러닝의 단점

  • Gabage In, Garbage Out : 얼마든지 편향된 결과를 만들어낼 수 있다.
  • 과적합 문제
  • 복잡한 알고리즘으로 인해 결과에 대한 논리적인 이해가 어려울 수 있다 (블랙박스)
  • “데이터만 넣으면 자동으로 최적화된 결과를 도출할 것이라는 것은 환상이다!”

데이터 수집의 중요성

  • 다양한 데이터 원천이 좋은 머신러닝 결과를 만들어준다
  • 데이터 수집 능력이 중요! (구글, 페이스북, 아마존이 강력한 이유)

Numpy & Pandas [복습]

넘파이 배열 ndarray

  • ndarray 초기화
  • reshape()를 통한 차원, 크기 변경
  • 인덱싱
    • 특정 위치의 단일값 추출
    • 슬라이싱 (slicing)
    • 팬시 인덱싱 (fancy indexing)
    • 불린 인덱싱 (boolean indexing)
  • ndarray 정렬과 선형대수 연산
    • 정렬
      • np.sort() : 원본은 그대로 둔 채 정렬된 행렬을 반환
      • ndarray.sort() : 원 행렬 자체를 정렬해서 변환, 반환 값은 None
      • 내림차순 정렬은 [::-1] 사용
      • argsort() : 정렬된 행렬의 원본 행렬 인덱스를 ndarray 형으로 반환
    • 선형대수 연산
      • np.dot() : 행렬 내적 연산
      • np.transpose() : 전치 행렬

판다스

  • 2차원 데이터를 효율적으로 가공/처리할 수 있는 기능 제공

  • 특히 시계열 데이터를 다루는 부분에서 유용하다

    • 시계열 데이터 = 일정 시간동안 순차적으로 수집 된, 시간별로 구성된 데이터 셋의 집합
  • 데이터의 구조

    • 2차원 데이터 ⇒ DataFrame
    • 데이터 프레임의 각 행, 인덱스 ⇒ ndarray
    • 데이터 프레임의 각 컬럼 ⇒ Series
  • 기본 API

    • read_csv() : 꼭 csv 파일만 읽어야 하는 것은 아님. sep=”” 옵션을 통해 데이터 정렬 형식 지정하여 오픈 가능
    • head()
    • shape : 데이터 프레임의 행렬 크기 반환 (행, 열)
    • info() : DataFrame내의 컬럼명, 데이터 타입, Null건수, 데이터 건수 정보 제공
    • describe() : 숫자형 컬럼들에 대해 데이터값들의 평균,표준편차,4분위 분포도 제공
    • value_counts() : 동일한 개별 데이터 값이 몇 건 있는지, 즉 개별 데이터값의 분포도를 제공. Series 객체에서만 호출 될 수 있으므로 반드시 DataFrame을 단일 컬럼으로 입력하여 Series로 변환한 뒤 호출
    • sort_values()

    ⇒ 기본 API를 이용해서 데이터에 대한 사전 파악을 잘하는 것이 중요

  • DataFrame과 리스트, 딕셔너리, ndarray 상호 변환

  • DataFrame의 데이터 삭제

    • drop()
      • axis=0 : row 삭제, axis=1 : column 삭제
      • inplace=False → 원본 df는 유지하고, 드롭된 df를 새로운 객체로 받는 경우. True는 원본변경
  • DataFrame의 index 속성

  • 데이터 셀렉션 및 필터링

    • []
    • 불린 인덱싱
    • 명칭(Label) 기반 인덱싱 : 컬럼의 명칭을 기준으로 위치를 지정
    • 위치(Position) 기반 인덱싱 : 0을 출발점으로, 가로축/세로축 좌표 기반으로 행열 위치를 정하고 데이터를 지정
    • ix[] : 명칭 기반과 위치 기반 인덱싱을 함께제공 → 디버깅시의 문제로 추후 버전에서 폐기될 예정
    • loc[] : 명칭 기반 인덱싱
    • iloc[] : 위치 기반 인덱싱
  • Aggregation 함수 & Group by

  • 결손 데이터 처리

    • isna() 로 결손 데이터 확인
    • fillna() 로 결손 데이터 처리
      • 임의의 값 입력
      • 숫자인 경우 평균값 입력

댓글남기기