14장: 머신러닝
머신러닝은 컴퓨터가 데이터로부터 학습하여 작업을 수행하는 기술입니다. 파이썬에서는 머신러닝을 위한 다양한 라이브러리를 제공하며, 이 장에서는 `scikit-learn` 라이브러리를 사용하여 머신러닝 모델을 구축하고 평가하는 방법에 대해 알아보겠습니다.
#### 14.1 `scikit-learn` 라이브러리
`scikit-learn`은 파이썬에서 가장 널리 사용되는 머신러닝 라이브러리 중 하나입니다. 먼저 `scikit-learn` 라이브러리를 설치해야 합니다.
```sh
pip install scikit-learn
```
#### 14.2 데이터 준비
머신러닝 모델을 구축하기 위해 데이터를 준비해야 합니다. 일반적으로 데이터를 훈련 데이터와 테스트 데이터로 나눕니다. `train_test_split` 함수를 사용하여 데이터를 나눌 수 있습니다.
```python
import pandas as pd
from sklearn.model_selection import train_test_split
# 데이터 로드
data = pd.read_csv('data.csv')
# 특성과 레이블 분리
X = data.drop(columns=['label'])
y = data['label']
# 훈련 데이터와 테스트 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
```
#### 14.3 모델 선택 및 훈련
`scikit-learn`은 다양한 머신러닝 알고리즘을 제공합니다. 여기서는 로지스틱 회귀(Logistic Regression) 모델을 사용하여 데이터를 학습하는 예제를 보겠습니다.
```python
from sklearn.linear_model import LogisticRegression
# 모델 초기화
model = LogisticRegression()
# 모델 훈련
model.fit(X_train, y_train)
```
#### 14.4 모델 예측
훈련된 모델을 사용하여 새로운 데이터에 대해 예측을 할 수 있습니다.
```python
# 예측
y_pred = model.predict(X_test)
print(y_pred)
```
#### 14.5 모델 평가
모델의 성능을 평가하기 위해 다양한 평가 지표를 사용할 수 있습니다. 여기서는 정확도(Accuracy)를 계산하는 예제를 보겠습니다.
```python
from sklearn.metrics import accuracy_score
# 정확도 계산
accuracy = accuracy_score(y_test, y_pred)
print(f"모델의 정확도: {accuracy}")
```
#### 14.6 교차 검증
교차 검증(Cross-Validation)은 모델의 일반화 성능을 평가하는 방법입니다. `cross_val_score` 함수를 사용하여 교차 검증을 수행할 수 있습니다.
```python
from sklearn.model_selection import cross_val_score
# 교차 검증 수행
scores = cross_val_score(model, X, y, cv=5)
print(f"교차 검증 점수: {scores}")
print(f"평균 교차 검증 점수: {scores.mean()}")
```
#### 14.7 하이퍼파라미터 튜닝
하이퍼파라미터 튜닝(Hyperparameter Tuning)은 모델의 성능을 최적화하기 위해 하이퍼파라미터를 조정하는 과정입니다. `GridSearchCV`를 사용하여 하이퍼파라미터 튜닝을 수행할 수 있습니다.
```python
from sklearn.model_selection import GridSearchCV
# 하이퍼파라미터 그리드 설정
param_grid = {
'C': [0.1, 1, 10, 100],
'solver': ['liblinear', 'saga']
}
# GridSearchCV 초기화
grid_search = GridSearchCV(model, param_grid, cv=5, scoring='accuracy')
# GridSearchCV 수행
grid_search.fit(X_train, y_train)
# 최적 하이퍼파라미터 및 점수 출력
print(f"최적 하이퍼파라미터: {grid_search.best_params_}")
print(f"최고 교차 검증 점수: {grid_search.best_score_}")
```
#### 14.8 모델 저장 및 로드
훈련된 모델을 파일로 저장하고 나중에 다시 로드할 수 있습니다. `joblib` 라이브러리를 사용하여 모델을 저장하고 로드할 수 있습니다.
```python
import joblib
# 모델 저장
joblib.dump(model, 'model.pkl')
# 모델 로드
loaded_model = joblib.load('model.pkl')
```
#### 14.9 다양한 머신러닝 알고리즘
`scikit-learn`은 로지스틱 회귀 외에도 다양한 머신러닝 알고리즘을 제공합니다. 몇 가지 예시는 다음과 같습니다:
- 선형 회귀 (Linear Regression)
- 서포트 벡터 머신 (Support Vector Machine)
- 결정 트리 (Decision Tree)
- 랜덤 포레스트 (Random Forest)
- K-최근접 이웃 (K-Nearest Neighbors)
- 나이브 베이즈 (Naive Bayes)
각 알고리즘은 `scikit-learn`의 클래스와 메서드를 사용하여 비슷한 방식으로 사용할 수 있습니다.
이상으로, 파이썬에서 머신러닝 모델을 구축하고 평가하는 방법에 대해 알아보았습니다. 다음 장에서는 데이터 전처리와 관련된 내용을 더 자세히 알아보겠습니다. 질문이나 요청사항이 있으시면 댓글로 남겨주세요!
---
이 글의 내용은 GoalKicker.com의 Python Notes for Professionals 책을 참조하였습니다.
댓글
댓글 쓰기