Scikit-learn 을 이용한 지도 학습

Beginner

This tutorial is from open-source community. Access the source code

소개

지도 학습 (supervised learning) 에서는 관측 데이터 X와 예측하고자 하는 외부 변수 y 사이의 관계를 학습하려고 합니다.
지도 학습 문제는 크게 분류 (classification) 와 회귀 (regression) 의 두 가지 유형으로 나뉩니다. 분류에서는 관측치의 클래스 또는 카테고리를 예측하는 것을 목표로 하고, 회귀에서는 연속적인 목표 변수를 예측하는 것을 목표로 합니다.

이 실습에서는 지도 학습의 개념을 탐구하고, 파이썬의 인기 머신러닝 라이브러리인 scikit-learn 을 사용하여 이를 구현하는 방법을 살펴볼 것입니다. 최근접 이웃 분류, 선형 회귀, 서포트 벡터 머신 (SVMs) 과 같은 주제를 다룰 것입니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접속합니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제약으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.

학습 중 문제가 발생하면 Labby 에 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 94%입니다.학습자들로부터 91%의 긍정적인 리뷰율을 받았습니다.

최근접 이웃 분류

이 단계에서는 최근접 이웃 분류의 개념과 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) 을 다루었습니다. 이러한 기법을 통해 고차원 관측치로부터 출력 변수를 예측하고 데이터를 서로 다른 카테고리로 분류할 수 있습니다. 이러한 기법을 실제 데이터셋에 적용함으로써 의료, 금융, 사회과학과 같은 다양한 분야에서 통찰력을 얻고 예측을 수행할 수 있습니다.