본문 바로가기
Python for Beginners

14.3 지도학습

by Andrew's Akashic Records 2023. 4. 25.
728x90

지도학습(Supervised Learning)은 입력 데이터와 해당 데이터에 대한 정답 레이블(label)을 사용하여 기계학습 모델을 학습시키는 방법입니다. 지도학습은 크게 회귀(Regression)와 분류(Classification)로 나뉩니다. 회귀는 연속적인 값(예: 집 가격)을 예측하는 문제를 해결하고, 분류는 이산적인 클래스 레이블(예: 스팸 메일 여부)을 예측하는 문제를 해결합니다.

예제: 붓꽃(Iris) 데이터셋을 사용한 분류

이 예제에서는 Scikit-learn을 사용하여 붓꽃(Iris) 데이터셋에 대한 분류 모델을 만들어보겠습니다. 이 데이터셋은 3개의 붓꽃 종(setosa, versicolor, virginica)에 대한 꽃잎과 꽃받침의 너비와 길이를 담고 있습니다.

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

# 데이터 불러오기
iris = load_iris()
X, y = iris.data, iris.target

# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 데이터 정규화
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 모델 선택 및 학습
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train_scaled, y_train)

# 예측 및 성능 평가
y_pred = knn.predict(X_test_scaled)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy:.2f}")

위 예제에서는 붓꽃 데이터셋을 불러와서 K-최근접 이웃(K-Nearest Neighbors, KNN) 알고리즘을 사용하여 분류 모델을 학습시키고, 테스트 데이터에 대한 정확도를 계산하였습니다. 이 과정에서 데이터 분할과 정규화를 수행하였으며, Scikit-learn 라이브러리의 다양한 함수와 클래스를 사용하였습니다.

지도학습 알고리즘에는 KNN 외에도 선형 회귀(Linear Regression), 로지스틱 회귀(Logistic Regression), 서포트 벡터 머신(Support Vector Machine), 결정 트리(Decision Tree), 랜덤 포레스트(Random Forest) 등 다양한 방법이 있습니다. 문제와 데이터에 따라 적절한 알고리즘을 선택하여 모델을 학습시킬 수 있습니다.

728x90

'Python for Beginners' 카테고리의 다른 글

14.5 강화학습  (0) 2023.04.25
14.4 비지도학습  (0) 2023.04.25
14.2 scikit-learn 라이브러리  (0) 2023.04.25
14.1 기계학습 소개  (0) 2023.04.25
13.5 패키징 및 배포  (0) 2023.04.17