[ AI기초 ] 05. 사이킷런(scikit-learn) 개념
'사이킷런' 이라는 파이썬 라이브러리에대해 처음 배웠던 날의 기록이다.
사이킷런은 내부에 머신러닝을 실습할수 있는 데이터들을 포함하고있는 라이브러리이다.
사이킷런에서는 지도학습, 비지도학습을 모두 사용할수 있으며, 빠르게 모델을 구성할 수 있다.
머신러닝 구현시, 적합한 알고리즘을 선택하는것이 고민될 때가 많을텐데, 이런 상황에서는 아래 'scikit-learn algorithm cheat-sheet를 이용하면 도움을 받을수있을것이다.
scikit-learn algorithm cheat-sheet
- 사용방법 : 상단 주황색 start 노드에서 시작해서 분석조건에 맞춰 yes/no 따라가면 됨
scikit-learn 라이브러리
- 머신러닝 알고리즘을 구현한 오픈소스 라이브러리중 가장 유명함
- 문서화가 잘 되어있으며, 일관되고 간결한 api가 장점임
- 알고리즘 : 파이썬클래스로 구현됨
- 데이터셋 : Numpy배열, Pandas DataFrame, Scipy 희소행렬 사용할수있음
- 지원 벡터 머신, 랜덤 포레스트, 그레디언트 부스팅, K-means 및 DBSCAN을 포함한 다양한 분류, 회귀 및
- 클러스터링 알고리즘 제공
scikit-learn 데이터 표현방식
- 지도학습을 기준으로, 머신러닝에 필요한 데이터는 '입력' 에해당하는 '특징행렬' 과, '출력' 에해당하는 '대상벡터' 이다.
[ X, 특징행렬(Feature Matrix) ]
- 행(row)을 나타내는 표본(sample)과, 열(column)을 나타내는 특징(feature)으로 구성됨
- 관례적으로 특징행렬은 변수 X에 저장
- 표본 (sample) : 데이터셋이 설명하는 개별객체를 나타냄 --> 행렬의 '행'
- 특징 (feature) : 각 표본을 연속적인 수치값, 부울값, 이산값으로 표현하는 개별관측치를 의미 --> 행렬의 '열'
- 행의개수 -> n_samples
- 열의개수 -> n_features
- [n_samples, n_features] 형태의 2차원 배열구조를 사용
[ y, 대상벡터 (Target Vector) ]
- 레이블(label)이라 부르는 각 표본에 대한 결과값
- 관례적으로 대상벡터는 변수y에 저장
- 연속적인 수치값, 이산클래스 / 레이블 가짐
- 길이 -> n_samples
- 1차원 배열구조(numpy배열, pandas series 사용)
- 데이터의 길이 = 표본의 개수
- 특징 행렬로부터 예측하고자 하는 값의 벡터
- 종속변수, 출력변수, 결과변수, 반응변수라고도 함
사이킷런의 주요 모듈
- example data - sklearn.datasets : 예제 데이터 세트 제공
- feature 처리 - sklearn.preprocessing : 데이터 전처리에 필요한 다양한 가공 기능 제공 / sklearn.feature_selection : 중요한 feature를 우선순위로 선택하기 위한 수행 기능 제공 sklearn.feature_extraction : 데이터의 벡터화된 feature 추출 기능 제공
- 차원축소 - sklearn.decomposition : 차원 축소와 관련된 알고리즘 제공
- 데이터분리, 검증 - sklearn.model_selection : 교차 검증을 위한 데이터 세트 분리
- 평가 - sklearn.metrics : Classification, Regression, Clustering 등 성능 측정 방법 제공
머신러닝 모델링 순서
1) 데이터 적재
2) 학습용 데이터와 테스트 데이터 분류
3) 머신러닝 알고리즘 선택
4) 하이퍼 파라메터
5) 데이터 예측및 모델 평가