소개
지도 학습 (supervised learning) 에서는 관측 데이터 X와 예측하고자 하는 외부 변수 y 사이의 관계를 학습하려고 합니다.
지도 학습 문제는 크게 분류 (classification) 와 회귀 (regression) 의 두 가지 유형으로 나뉩니다. 분류에서는 관측치의 클래스 또는 카테고리를 예측하는 것을 목표로 하고, 회귀에서는 연속적인 목표 변수를 예측하는 것을 목표로 합니다.
이 실습에서는 지도 학습의 개념을 탐구하고, 파이썬의 인기 머신러닝 라이브러리인 scikit-learn 을 사용하여 이를 구현하는 방법을 살펴볼 것입니다. 최근접 이웃 분류, 선형 회귀, 서포트 벡터 머신 (SVMs) 과 같은 주제를 다룰 것입니다.
VM 팁
VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접속합니다.
때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제약으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.
학습 중 문제가 발생하면 Labby 에 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.
최근접 이웃 분류
이 단계에서는 최근접 이웃 분류의 개념과 scikit-learn 을 사용하여 구현하는 방법을 탐색합니다. 다양한 아이리스 꽃의 측정값으로 구성된 아이리스 데이터셋을 사용할 것입니다.
아이리스 데이터셋 로드
import numpy as np
from sklearn import datasets
iris_X, iris_y = datasets.load_iris(return_X_y=True)
데이터를 학습 및 테스트 세트로 분할
np.random.seed(0)
indices = np.random.permutation(len(iris_X))
iris_X_train = iris_X[indices[:-10]]
iris_y_train = iris_y[indices[:-10]]
iris_X_test = iris_X[indices[-10:]]
iris_y_test = iris_y[indices[-10:]]
최근접 이웃 분류기 생성 및 학습
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier()
knn.fit(iris_X_train, iris_y_train)
예측 수행
predictions = knn.predict(iris_X_test)
선형 회귀
이 단계에서는 선형 회귀의 개념과 scikit-learn 을 사용하여 구현하는 방법을 탐색합니다. 환자의 생리학적 변수와 1 년 후 질병 진행 상황으로 구성된 당뇨병 데이터셋을 사용할 것입니다.
당뇨병 데이터셋 로드
diabetes_X, diabetes_y = datasets.load_diabetes(return_X_y=True)
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]
diabetes_y_train = diabetes_y[:-20]
diabetes_y_test = diabetes_y[-20:]
선형 회귀 모델 생성 및 학습
from sklearn import linear_model
regr = linear_model.LinearRegression()
regr.fit(diabetes_X_train, diabetes_y_train)
예측 수행 및 성능 지표 계산
predictions = regr.predict(diabetes_X_test)
mse = np.mean((predictions - diabetes_y_test)**2)
variance_score = regr.score(diabetes_X_test, diabetes_y_test)
서포트 벡터 머신 (SVMs)
이 단계에서는 서포트 벡터 머신 (SVMs) 의 개념과 분류 작업에 어떻게 사용될 수 있는지 살펴봅니다. SVM 은 서로 다른 클래스의 데이터 포인트를 최대한 분리하는 초평면을 찾으려고 합니다.
선형 SVM 생성 및 학습
from sklearn import svm
svc = svm.SVC(kernel='linear')
svc.fit(iris_X_train, iris_y_train)
서로 다른 커널을 사용한 SVM 생성 및 학습
svc_poly = svm.SVC(kernel='poly', degree=3)
svc_rbf = svm.SVC(kernel='rbf')
svc_poly.fit(iris_X_train, iris_y_train)
svc_rbf.fit(iris_X_train, iris_y_train)
요약
이 실험에서는 다양한 지도 학습 기법과 scikit-learn 을 사용하여 이를 구현하는 방법을 배웠습니다. 최근접 이웃 분류, 선형 회귀, 서포트 벡터 머신 (SVM) 을 다루었습니다. 이러한 기법을 통해 고차원 관측치로부터 출력 변수를 예측하고 데이터를 서로 다른 카테고리로 분류할 수 있습니다. 이러한 기법을 실제 데이터셋에 적용함으로써 의료, 금융, 사회과학과 같은 다양한 분야에서 통찰력을 얻고 예측을 수행할 수 있습니다.