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 책을 참조하였습니다.

댓글