파이썬 big Data 분석을 위한 주요 라이브러리 소개
데이터 처리를 위한 라이브러리
Numpy
- 파이썬의 리스트를 확장한 다차원 배열(multi-dimensional array) 제공
- 난수생성, 푸리에변환, 행렬연산, 통계분석을 지원
- 일반적으로 Scipy, Pandas, matplotlib 등 다른 패키지와 함께 쓰임.
- Numpy를 보통 np로 호출하는 것이 관례: “import numpy as np”
Pandas
- Pandas는 R의 dataframe 데이터 타입을 참고하여 만든 것으로 pandas dataframe 이라고 부름
- Pandas의 dataframe: 테이블 형식의 데이터 (tabular data type)
- 열(column), 행(row), 인덱스(index) 로 구성
- 리스트, 튜플, 사전 타입의 형태로 데이터를 보관
Spacy
- 웹 사이트에 댓글이나 리뷰를 스크래핑하여 분석 가능한 형태의 데이터로 변환시킬 때 사용하는 라이브러리
- 특별히, 자연어처리(NLP: Natural Language Processing)를 위해 만들어진 파이썬의 대표적인 라이브러리
- 쳇봇 등에 주로 사용 ( Voice-> Tockenize -> Document Vertorization -> Text 구분)
데이터 시각화 Visualization
Matplotlib
- Data Visualization 분야에서의 대표적인 파이썬 라이브러리
- 그 이외에 seaborn, plotly, folium 등 다양한 라이브러리 가 있음
데이터 모델링 위한 라이브러리
Scikit Learn
- AI, 빅데이터 분석, 머신러닝을 시작할 때 제일 먼저 알아야 하는 파이썬 라이브러리
- 지도 학습, 비지도 학습, 모델 선택 및 평가, 데이터 변환 라이브러리로 구성
- 지도 학습 : X 변수가 주어 졌을때 , Y 변수를 추정해내는 방법 (새로운 데이터가 나왔을때 진화가 어려움)
- 비지도 학습 : Y 가 없는 경우, 군집화, 이상치 검출
- 모델 선택 및 평가
- 교차 검증(cross-validation) : 전체 자료를 5개로 구분하여, 5번에 나누어 학습하여 평가하는 방법
- 파이프라인(pipeline) : Variable->Normlized->처리하는 것을 한번에 처리하는 것
- 데이터 변환 : 속성 추출(Feature Extraction), 전처리(Preprocessing)
- 6개 모듈: Data Pre-Processing, Dimensions Reduction, Regression, Classification, Clustering, Model Selection
- 클래스는 기본 BaseEstimator가 있고, ClassifierMixin, RegressorMixin, ClusterMixin 클래스가 있어 상속받아 구현됨.
- 데이터를 적합하는 fit 메서드와 예측하는 predict 메서드를 가짐.
- 모델 과 Data를 fit에 넣어서 예측 모형을 만드는 과정
- 예측모형을 predict에 넣어서 예측을하는데 Probablity 예측과 Probablity 예측을 기반으로 분석
- 데이터를 적합하는 fit 메서드와 예측하는 predict 메서드를 가짐.
- 라이브러리 명: import sklearn
TensorFlow
- 구글 브레인팀이 연구와 제품개발을 목적으로 만든 머신러닝 라이브러리
- Tensorboard 상에 있는 Data Flow Graphs 가 특징
- 코드 수정 없이 CPU/GPU 모드로 동작
- 계산 구조와 목표 함수만 정의하면 자동으로 미분 계산 처리 ( 에러함수를 구할때 주로 사용 )
- 데이터 플로우 그래프 (Data Flow Graph)
- 수학 계산과 데이터의 흐름을 노드(Node)와 엣지(Edge)로 표현
- 에러를 최소화 시키다 보면 Overfit이 발생할 수 있다. 이 기준으로 Stop 시점을 잡아낸다
- TensorFlow 용어 정리
- 노드: 수학적 계산, 데이터(텐서) 입/출력의 작업을 수행하는 표현으로 오퍼레이션(Operation) 또는 op 라고 부름
- 엣지: 노드들 간 데이터의 입출력 관계를 표현
- 텐서: 수학/물리에서는 기하 구조를 좌표 독립적으로 표현하기 위한 표기법의 의미이지만 여기에서는 학습 데이터를 저장하는 다차원 배열의 의미를 갖음
- 세션(session): 오퍼레이션의 실행 환경을 캡슐화한 것으로 그래프 실행을 위해서는 세션 객체가 필요
- 변수(variable): 메모리 상에서 텐서를 저장하는 버퍼 역할을 하면서 그래프 실행시, 파라메터(parameter)를 저장하고 갱신하는데 사용
Keras
- 파이썬으로 작성된 딥러닝(신경망) API
- TensorFlow, CNTK, Theano와 함께 사용 ( 도우미 역할 )
- 컨볼루션 신경망(CNN) - 얼굴인식 등, 순환 신경망(RNN)- Time Series 모델, CNN&RNN 조합 모두를 지원
- (특징1) 사용자 친화성: 일관되고 간단한 API 제공, 자주 쓰는 기능에 대해서 사용자 액션 최소화, 사용자 에러가 발생하는 경우 명료하고 구체적인 피드백 제공
- (특징2) 모듈성: 최소한의 제약으로 다양한 조합이 가능한 독립적이고 다양한 기능을 수행할 수 있도록 프로그래밍 지원
- (특징3) 확장성: 새로운 모듈, 클래스, 함수를 간단하게 추가
PyTorch
- 페이스북에서 만든 머신러닝 라이브러리
- 특별히 딥러닝을 위하여 만든 라이브러리로 다양한 API와 내장 함수를 제공
- 1.3버전으로 올라가면서부터 tensor flow의 tensor board와 연동이 가능
- 주요 기능
- 이미지 (Image), 오디오 (Audio), 텍스트 (Text) 분석
- 강화 학습 (Reinforcement Learning)
- PyTorch 모델을 운영환경(Production)에 적용
- 병렬 & 분산 학습
- 모델 최적화 (Model Optimization)
이미지, 오디오 인식 라이브러리
Librosa
- 오디오 인식을 위한 라이브러리
- Laplacian segmentation 알고리즘을 쉽게 구현
OpenCV
- 이미지와 비디오 인식을 위한 라이브러리
- 다양한 API와 파이썬 뿐만이 아니라 Java와 matlab 도 함께 지원
웹 개발을 위한 라이브러리
Django
- 몇 줄 안되는 코드로 쉽게 웹 서비스 개발을 구현할 수 있게 도와주는 라이브러리
- 대부분의 데이터베이스를 지원하는 database-driven 프레임워크를 가짐
Flask
- 작고 간단한 Task를 쉽게 구현할 수 있도록 만든 웹 개발 프레임워크
- 대부분의 파이썬 라이브러리의 웹 유저 인터페이스(Web UI)는 Flask로 짜여짐.
Data Gathering 라이브러리
Scrapy
- 웹 크롤링(Web Crawling)을 위한 도구
- 특정 웹 사이트 내용을 읽어드리고자 하는 경우 사용
-
예를 들어, 어느 레스토랑의 리뷰를 모두 검색하여 정리하고자 할 때 사용
※ 로봇배제표준(robots exclusion standard 또는 robots exclusion protocol)
- 웹 사이트에 로봇이 접근하는 것을 방지하기 위해 만든 규약 (권고안)
- 로봇이 robots.txt 파일을 읽고 접근 제한
Beautiful Soup
- 웹 화면에 나온 내용을 크롤링(Crawling)하는 도구
- 웹문서인 HTML이나 XML에서 데이터를 추출하여 파서(parser)를 이용해 분석
Selenium
- 웹 브라우저(크롬, 파이어 폭스, IE, 사파리 등등)를 콘트롤하는 Framework
- Webdriver라는 API를 통해 웹 브라우저를 제어
- 브라우저 다운받을때 Selenium 와 연결하는 작업이 필요
댓글남기기