FUNDAMENTAL 9. 사이킷런으로 구현해 보는 머신러닝
1. 머신러닝의 알고리즘
- 지도학습 : 분류, 예측, 회귀
- 비지도학습 : 클러스터링, 차원축소
- 선형회귀, 로지스틱 회귀, 앙상블트리(랜덤포레스트, 그래디언트 부스팅), 신경망과 딥러닝, K-평균, K-모드, 가우시안혼합모델 클러스터링, DBSCAN, 계층적 군집화, PCA, SVD, LDA
- 강화학습 : 에이전트(학습 주체), 환경(에이전트에게 주어진 상황, 조건), 행동(에이전트의 판단), 보상(행동에 대한 보상)
2. 사이킷런에서 가이드하는 머신러닝 알고리즘
- 분류, 회귀, 군집화, 차원축소가 있음
- 알고리즘은 크게 데이터 양, 라벨의 유무, 데이터 종류(수치형, 범주형)으로 나뉨
- 분류 알고리즘 : SVC, EnsembleClassifiers, SGD Classifier, NaiveBayes, Linear SVC,
K Neighbors Classifier, Kernel approximation
- 회귀 알고리즘 : SGD Regressor, Lasso, ElasticNet, RidgeRegression,
SVR(kernel = "linear"), SVR(kernel = "rbf"), EnsembelRegressor
- 클러스터링 알고리즘 : Spectral Clustering, GMM, K-Means, MiniBatch K-Means, MeanShift, VBGMM
- 차원축소 알고리즘 : Randomized PCA, Isomap, Spectral Embedding, LLE, Kernel approximation
3. Hello Scikit-learn
- pip install scikit-learn
- scipy + toolkit = scikit
- sklearn.model_selection.train_test_split (훈련데이터와 테스트 데이터를 나누는 함수)
- transfomer, estimator, fit, predict, pipline(meta-estimator)
4. 사이킷런의 주요 모듈 (1) 데이터 표현법
- 데이터셋 : sklearn.datasets (사이킷런에서 제공하는 데이터셋)
- 데이터타입 : sklearn.utils.Bunch (사이킷런에서 제공하는 데이터셋의 데이터 타입(자료형))
- 데이터 전처리 : sklearn.preprocessing (데이터 전처리(정규화, 인코딩, 스케일링등))
- 데이터 분리 : sklearn.model_selection.train_test_split (학습용/테스트용 데이터셋 분리)
- 평가 : sklearn.metrics (분류,회귀, 클러스터링 알고리즘의 성능을 측정하는 함수를 제공)
- 머신러닝 알고리즘(모델) : sklearn.ensemble (앙상블관련 머신러닝 알고리즘 - 랜덤포레스트, 에이다 부스트, 그래디언트 부스팅)
sklearn.linear_model (선형 머신러닝 알고리즘 - 릿지, 라쏘, SGD 등)
sklearn.naive_bayes (나이브 베이즈 관련 머신러닝 알고리즘)
sklearn.neighbors (최근접 이웃 모델 관련 - 릿지, 라쏘, SGD 등)
sklearn.svm (SVM관련 머신러닝 알고리즘)
sklearn.tree (트리 관련 머신러닝 알고리즘 - 의사결정트리 등)
sklearn.cluster (군집관련 머신러닝 알고리즘)
- 데이터 표현법 : 특성 행렬, 타겟 벡터
5. 사이킷런의 주요 모듈 (2) 회귀 모델 실습
- 선형 회귀, RMSE으로 실습함
6. 사이킷런의 주요 모듈 (3) datasets 모듈
- datasets.load로 시작
- boston, brest_cancer, digits, iris, wine 등이 있음
- 파이썬의 딕셔너리와 유사한 데이터
7. 사이킷런의 주요 모듈 (4) 사이킷런 데이터셋을 이용한 분류 문제 실습
- 랜덤포레스트를 이용하여 실습
8. 사이킷런의 주요 모듈 (5) Estimator
- 데이터셋을 기반으로 머신러닝 모델의 파라미터를 추정하는 객체를 말함
- 사이킷런의 Estimator 객체를 사용하면 비지도학습, 지도학습에 관계 없이 학습과 예측을 할 수 있음
9. 훈련 데이터와 테스트 데이터 분리하기
- train_test_split(X, Y, test_size = (보통 0.2로 함), random_state = (랜덤시드숫자))
- 4개의 원소를 반환함 : [0] : x_train, [1] : x_test, [2] : y_train, [3] : y_test