머신 러닝 기초: 파이썬을 사용한 Scikit-Learn 실습
머신 러닝이란?
머신 러닝(Machine Learning)은 인공지능(AI)의 한 분야로, 컴퓨터가 명시적인 프로그래밍 없이 데이터를 통해 학습하고 예측을 수행할 수 있도록 하는 기술입니다. 머신 러닝은 패턴 인식, 데이터 마이닝, 예측 분석 등에 활용됩니다.
머신 러닝의 주요 개념
- 훈련 데이터와 테스트 데이터
- 데이터를 훈련 데이터(training data)와 테스트 데이터(test data)로 분리하여 모델을 학습하고 평가합니다.
- 훈련 데이터는 모델을 학습시키는 데 사용되고, 테스트 데이터는 모델의 성능을 평가하는 데 사용됩니다.
- 지도 학습과 비지도 학습
- 지도 학습(Supervised Learning): 입력 데이터와 함께 정답(레이블)이 주어지는 학습 방식입니다. 예: 회귀, 분류.
- 비지도 학습(Unsupervised Learning): 입력 데이터만 주어지고 정답이 없는 학습 방식입니다. 예: 클러스터링, 차원 축소.
- 평가 지표
- 모델의 성능을 평가하기 위한 지표입니다. 예: 정확도(accuracy), 정밀도(precision), 재현율(recall), F1-score 등.
Scikit-Learn 소개
Scikit-Learn은 파이썬에서 가장 널리 사용되는 머신 러닝 라이브러리 중 하나로, 다양한 머신 러닝 알고리즘을 제공하며, 간단하고 일관된 API를 통해 쉽게 사용할 수 있습니다.
Scikit-Learn 실습
- 필수 라이브러리 설치
pip install numpy pandas scikit-learn
- 데이터 로드 및 전처리
import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler # 데이터 로드 (예제 데이터 사용) from sklearn.datasets import load_iris data = load_iris() X = pd.DataFrame(data.data, columns=data.feature_names) y = pd.Series(data.target) # 데이터 분리 (훈련 데이터와 테스트 데이터) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 데이터 스케일링 (표준화) scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test)
- 모델 학습
from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, classification_report # 모델 초기화 및 학습 model = LogisticRegression() model.fit(X_train_scaled, y_train) # 예측 y_pred = model.predict(X_test_scaled) # 성능 평가 accuracy = accuracy_score(y_test, y_pred) report = classification_report(y_test, y_pred) print(f'Accuracy: {accuracy}') print(f'Classification Report:\n{report}')
- 결과 해석
Accuracy: 0.9777777777777777 Classification Report: precision recall f1-score support 0 1.00 1.00 1.00 16 1 1.00 1.00 1.00 19 2 0.92 1.00 0.96 10 accuracy 0.98 45 macro avg 0.97 1.00 0.98 45 weighted avg 0.98 0.98 0.98 45
- 결과 시각화
import matplotlib.pyplot as plt from sklearn.decomposition import PCA # PCA를 사용하여 데이터 시각화 pca = PCA(n_components=2) X_pca = pca.fit_transform(X_test_scaled) plt.figure(figsize=(8, 6)) scatter = plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y_test, cmap='viridis') legend1 = plt.legend(*scatter.legend_elements(), title="Classes") plt.gca().add_artist(legend1) plt.title('PCA of Iris Dataset') plt.xlabel('PCA Component 1') plt.ylabel('PCA Component 2') plt.savefig("pca_iris.png") plt.show()
전체 코드
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
# 데이터 로드 (예제 데이터 사용)
from sklearn.datasets import load_iris
data = load_iris()
X = pd.DataFrame(data.data, columns=data.feature_names)
y = pd.Series(data.target)
# 데이터 분리 (훈련 데이터와 테스트 데이터)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 데이터 스케일링 (표준화)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# 모델 초기화 및 학습
model = LogisticRegression()
model.fit(X_train_scaled, y_train)
# 예측
y_pred = model.predict(X_test_scaled)
# 성능 평가
accuracy = accuracy_score(y_test, y_pred)
report = classification_report(y_test, y_pred)
print(f'Accuracy: {accuracy}')
print(f'Classification Report:\n{report}')
# PCA를 사용하여 데이터 시각화
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_test_scaled)
plt.figure(figsize=(8, 6))
scatter = plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y_test, cmap='viridis')
legend1 = plt.legend(*scatter.legend_elements(), title="Classes")
plt.gca().add_artist(legend1)
plt.title('PCA of Iris Dataset')
plt.xlabel('PCA Component 1')
plt.ylabel('PCA Component 2')
plt.savefig("pca_iris.png")
plt.show()
이 코드는 다음과 같은 순서로 진행됩니다:
- Iris 데이터셋 로드 및 분리
- 데이터 표준화
- Logistic Regression 모델 학습 및 예측
- 모델 성능 평가
- PCA 시각화 및 저장
시각 자료
- Iris 데이터셋의 PCA 시각화
- Classification Report
Precision Recall F1-Score Support 1.00 1.00 1.00 16 1.00 1.00 1.00 19 0.92 1.00 0.96 10 Accuracy 0.98 Macro Avg 0.97 1.00 0.98 Weighted Avg 0.98 0.98 0.98
이 실습을 통해 머신 러닝의 기초 개념과 Scikit-Learn을 사용한 간단한 모델 학습 과정을 이해할 수 있습니다. 머신 러닝 모델의 성능을 평가하고, 실제 데이터에 적용해 보세요. 추가적인 질문이나 도움이 필요하시면 언제든지 댓글로 남겨주세요. 감사합니다!
'개발 실습 및 프로젝트' 카테고리의 다른 글
클라우드 컴퓨팅 실습: AWS EC2 인스턴스 생성 및 설정 (0) | 2024.05.21 |
---|---|
파이썬을 사용한 데이터 분석 기초 (0) | 2024.05.20 |
[C#]파일 날짜 수정기(File Date Modifier) (0) | 2021.02.07 |
[프로그래머스] K번째수 javascript (공부) (0) | 2021.01.31 |
[프로그래머스] 크레인 인형뽑기 게임 javascript (0) | 2021.01.31 |