[파이썬 머신러닝 완벽 가이드] 머신러닝의 개념, 넘파이, 판다스
머신러닝의 개념
— “애플리케이션을 수정하지 않고도 데이터를 기반으로 패턴을 학습하고 결과를 추론하는 알고리즘 기법”
- 현실세계의 매우 복잡한 업무와 규칙을 구현하려면 사람의 능력만으로 어플리케이션을 구현하기 어렵고 구현된 어플리케이션의 예측 정확성도 문제가 되는데 머신러닝을 활용하면 더 쉽게 접근이 가능하다.
- 복잡한 문제를 데이터를 기반으로 숨겨진 패턴을 인지해 해결 ⇒ 예측과 추론
머신러닝의 분류
지도학습 (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는 원본변경
- drop()
-
DataFrame의 index 속성
-
데이터 셀렉션 및 필터링
- []
- 불린 인덱싱
- 명칭(Label) 기반 인덱싱 : 컬럼의 명칭을 기준으로 위치를 지정
- 위치(Position) 기반 인덱싱 : 0을 출발점으로, 가로축/세로축 좌표 기반으로 행열 위치를 정하고 데이터를 지정
- ix[] : 명칭 기반과 위치 기반 인덱싱을 함께제공 → 디버깅시의 문제로 추후 버전에서 폐기될 예정
- loc[] : 명칭 기반 인덱싱
- iloc[] : 위치 기반 인덱싱
-
Aggregation 함수 & Group by
-
결손 데이터 처리
- isna() 로 결손 데이터 확인
- fillna() 로 결손 데이터 처리
- 임의의 값 입력
- 숫자인 경우 평균값 입력
댓글남기기