본문 바로가기
머신러닝

[머신러닝] 파이썬 머신러닝 완벽 가이드 - 1장. 파이썬 기반의 머신러닝과 생태계 이해

by Hessedist 2022. 4. 18.

 

[파이썬 머신러닝 완벽 가이드] 1장. 파이썬 기반의 머신러닝과 생태계 이해

  • 핵심 개념과 실전 구현
  • 알고리즘만 이해하는것이 아니라 애플리케이션을 작성해보면서 익히는게 더욱 중요함.

 

머신러닝의 개념

머신러닝 개념

  • 머신러닝이랑 애플리케이션을 수정하지 않고도 데이터를 기반으로 패턴을 학습하고 결과를 추론하는 알고리즘 기법을 통칭함.
  • 현실 세계의 매우 복잡한 조건들을 해결해 나가고 있음. 
  • 데이터 마이닝, 영상 인식, 음성 인식, 자연어 처리 등에서 머신러닝 적용

머신러닝,  왜 필요한가?

  • 현실 세계의 복잡한 업무와 규칙을 구현하기 위해. 
  • 해결방법: 데이터를 기반으로 숨겨진 패턴을 인지함. (신뢰도 있는 예측 결과 도출)

머신러닝의 분류

  • 지도 학습: 분류, 회귀, 시각/음성, 감지/인지
  • 비지도 학습: 군집화(클러스터링), 차원 축소
  • 강화학습

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

  • 새로운 예측 모델을 이용해 더욱 정확한 예측 및 의사 결정을 도출함.

머신러닝 알고리즘 유형

  • 기호주의 / 연결주의 / 유전 알고리즘 / 베이지안 통계 / 유추주의

머신러닝의 단점

  • 데이터에 의존적
  • 과적합 가능성 큼 
  • 논리적 이해 어려울 수 있음. (블랙박스)
  • 모델 개선 노력 필요. (데이터의 특성을 파악하고 최적의 알고리즘과 파라미터를 구성할 수 있는 고급 능력이 필요)

왜 데이터 수집에 열광하는가?

  • 다양하고 광대한 데이터를 기반으로 만들어진 머신러닝 모델은 더 좋은 품질을 약속함. 

 

파이썬 기반 머신러닝의 특징 및 장점과 구성요소

R과 Python 비교

  • R은 통계 전용 프로그램 언어
  • 파이썬은 분석 & 개발 언어 (뛰어난 확장성, 연계, 호환성, Deep Learning 활용 언어)

파이썬 머신러닝 생태계를 구성하는 주요 패키지

  • 머신러닝 패키지 : Scikit learn 
  • 배열/선형대수/통계 패키지 : Numpy, Scipy
  • 데이터 핸들링 : Pandas
  • 시각화 : Matplotlib, Seaborn
  • 대화형 파이썬 툴 : Jupyter 

 

파이썬기반 머신러닝을 위한 SW의 설치

 

사이킷런 업그레이드 수행 및 XGBoost와 LightGBM 설치

 

주피터 노트북 사용법과 넘파이/판다스의 필요성

머신러닝을 위한 넘파이와 판다스의 중요성

  • 사이킷런이 넘파이 기반에서 작성됐기 때문
  • 넘파이와 판다스에 대한 기본 프레임워크와 중요 API만 습득
  • 일단 코드와 부딪쳐가면서 모르는건 구글링

 

강의에 사용될 예제 소스 코드 다운로드 받기

GitHub코드 주소

 

GitHub - chulminkw/PerfectGuide

Contribute to chulminkw/PerfectGuide development by creating an account on GitHub.

github.com

 

넘파이 배열 ndarray 소개

넘파이 ndarray

  • ndarray: N차원(Dimension) 배열(Array) 객체
  • ndarray 생성: Numpy 모듈의 array() 함수로 생성, 인자로 주로 파이썬 list 또는 ndarray 입력
  • ndarray 형태(Shape)와 차원(ndim)
  • ndarray 타입(type): 연산은 같은 데이터 타입만 가능
  • ndarray 타입(type) 변환: astype() 이용
  • axis 축 (3차원은 다름)
    • 열 방향성 : 0
    • 행 방향성 : 1

 

넘파이 배열 ndarray 생성, shape, 차원, 타입 실습

  • ndarray 개요 & 데이터 타입

넘파이 배열 ndarray 초기화 방법과 ndarray 차원과 크기를 변경하는 reshape()의 이해

ndarray를 편리하게 생성하기 - arange, zeros, ones

  • 연속값이나 0 또는 1 로 초기화 생성해야 할 경우
  • 테스트용으로 데이터를 만들거나 데이터를 일괄적으로 초기화해야 할 경우에 사용

차원과 크기를 변경하는 reshape()

  • ndarray를 특정 차원 및 형태로 변환함
  • 변환 형태를 함수 인자로 부여하면 됨 
  • -1을 부여하면 -1에 해당하는 axis의 크기 가변적 & -1이 아닌 인자값은 고정
  • reshape(-1, 1) : 2차원으로 변환 / reshape(-1, ) : 1차원으로 변환 

넘파이 ndarray 인덱싱(Indexing) 이해

ndarray의 데이터 세트 선택하기 - 인덱싱 (Indexing)

  • 특정 위치의 단일값 추출
    • 1차원 ndarray 
    • 2차원 ndarray
  • 슬라이싱(Slicing)
    • 슬라이싱은 : 을 이용하여 연속된 값을 선택
  • 팬시 인덱싱 (Fancy Indexing)
    • 인덱스 집합을 지정하면 해당하는 ndarray를 반환.
  • 불린 인덱싱 (Boolean Indexing)
    • 조건 필터링과 추출을 동시에 할 수 있음. 

넘파이 ndarray의 sort와 argsort

배열의 정렬 - sort()

  • np.sort(ndarray): 인자로 들어온 원 행렬은 그대로 유지, 원 행렬의 정렬된 행렬을 반환
  • ndarray.sort(): 원 행렬 자체를 정렬한 형태로 변환, 반환값은 None
  • 2차원 배열에서 axis 기반의 sort(): 

 배열의 정렬 - argsort()

  • 정렬된 행렬의 원본 행렬 인덱스를 ndarray 형으로 반환

넘파이 ndarrayd의 내적과 전치 행렬

선형대수 연산 - 행렬 내적

  • np.dot(A, B)

선형대수 연산 - 전치 행렬

  • np.transpose(A)

판다스(Pandas) 개요와 기본 API 

판다스 (Pandas)

  • 파이썬에서 데이터 처리를 위해 존재하는 가장 인기 있는 라이브러리
  • 행과 열로 이루어진 2차원 데이터를 효율적으로 가공/처리할 수 있는 다양하고 훌륭한 기능을 제공함. 

판다스의 주요 구성 요소

  • DataFrame, Series, Index

기본 API

  • read_csv() / head() / shape / info() / describe() / value_counts() / sort_values()

판다스 value_counts 메소드 소개 

판다스 DataFrame의 변환, 컬럼 세트 생성/수정

DataFrame과 리스트, 딕셔너리, 넘파이 ndarray 상호 변환

  • 리스트를 DataFrame 으로 변환
  • ndarray 를 DataFrame 으로 변환
  • 딕셔너리(dict)를 DataFrame으로 변환
  • DataFrame을 ndarray로 변환
  • DataFrame을 리스트로 변환
  • DaataFrame을 딕셔너리로 변환

판다스  DataFrame의 데이터 삭제하기

DataFrame의 drop()

  • labels : 컬럼명
  • axis : 행, 열
  • inplace : 원본 유지 및 변경

판다스 Index 객체 이해

Index 개요

  • RDBMS PK와 유사, 고유하게 식별하는 객체 (하지만 판다스 Index는 별도의 컬럼값이 아님.)
  • 연산에서 제외 (오직 식별)
  • Index 객체만 추출가능 
  • 숫자형 & 문자형 / Datetime 도 가능 
  • reset_index() 수행 시 새롭게 인덱스 연속 숫자형으로 할당 (기존 인덱스는 새로운 컬럼명으로 추가)
  • 인덱스 일부만 값변경 할 수는 없음

판다스 데이터 인덱싱과 필터링

[ ]

  • 컬럼 기반 필터링 또는 불린 인데싱 필터링 제공

loc[ ], iloc[ ]

  • 명칭/위치 기반 인덱싱을 제공

불린 인덱싱 (Boolean Indexing)

  • 조건식에 따른 필터링을 제공

판다스 DataFrame의 정렬 그리고 Aggregation 함수와 Group by 수행

정렬 - sort_values()

  • by =['컬럼명']
  • ascending=True(오름차순) / False(내림차순)

집합 연산 수행 - Aggregation

Group By

  • groupby()

판다스 결손 데이터 처리하기

isna() / fillna()

nunique() / replace ()

판다스  람다식 적용하여 데이터 가공하기 

파이썬 기반의 머신러닝과 생태계 이해 Summary

1장 Summary

  • 머신러닝이란 애플리케이션을 수정하지 않고도 데이터를 기반으로 패턴을 학습하고 결과를 추론하는 알고리즘 기법을 통칭.
  • 직관적인 문법, 많은 라이브러리, 뛰어난 생산성을 가지는 파이썬 언어를 기반으로 한 머신러닝 애플리케이션은 유연성, 통합성 등의 많은 장점을 사용자에게 제공해 줌.

파이썬 기반의 머신러닝을 익히기 위해서는 비단 머신러닝 패키지 뿐만 아니라, 넘파이, 판다스, 시각화 등의 다양한 지원 패키지 들도 같이 학습되어야 함.  단 이들 지원 패키지를 익히기 위해서 많은 시간을 투자할 필요는 없음. 기본 내용은 숙지하되, 상세한 사용법은 머신러닝 애플리케이션을 작성하면서 인터넷 등을 통해 찾아가면서 구현하는 것이 이들 지원 패키지를 빨리 익히는데 도움이 더 될것이다. 

 

 

 

-

  • -

-

  • -
  •