머신러닝 파이프라인이란?
머신러닝 관련 글을 읽다보면 파이프라인이라는 용어가 많이 등장하는데요 해당 용어에 대해 궁금하신 분들이 많을 것이라고 생각됩니다.
결론적으로 말하면 머신러닝에서 파이프라인은 데이터 처리 및 분석 과정에서 발생하는 여러 단계를 자동화하는 방법입니다. 머신러닝 모델을 학습시키기 위해서는 데이터를 불러오고, 전처리하고, 모델을 학습시키고, 결과를 평가하는 등의 다양한 과정을 거쳐야 합니다. 파이프라인을 통해 이러한 단계들을 효율적으로 수행할 수 있습니다.
머신러닝 파이프라인은 크게 세 가지 단계로 구성됩니다.
- 데이터 전처리
- 모델 학습
- 모델 평가
파이프라인에서 각 단계는 논리적으로 구성되어 있으며, 한 단계가 끝나면 다음 단계로 넘어갑니다. 파이프라인을 사용하면 데이터 전처리, 모델 학습, 평가 과정을 자동화하여 반복적이고 시간 소모적인 과정을 간단하게 처리할 수 있습니다.
머신러닝 파이프라인을 이용한 MNIST 예제
import pandas as pd
import numpy as np
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix
import matplotlib.pyplot as plt
class MNISTPipeline:
def __init__(self):
self.model = None
def load_data(self):
mnist = fetch_openml('mnist_784')
X, y = mnist['data'].values, mnist['target'].values
return X, y
def preprocess_data(self, X, y):
# 0~1 사이로 스케일링
X = X / 255.
# train/test 데이터로 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
return X_train, X_test, y_train, y_test
def train_model(self, X_train, y_train):
# 로지스틱 회귀 모델 학습
self.model = LogisticRegression(max_iter=1000)
self.model.fit(X_train, y_train)
def predict(self, X_test):
# 예측
y_pred = self.model.predict(X_test)
return y_pred
def evaluate(self, y_test, y_pred):
# 정확도 및 오차 행렬 출력
acc = accuracy_score(y_test, y_pred)
cm = confusion_matrix(y_test, y_pred)
return acc, cm
def visualize_data(self, X_train, y_train):
# 데이터 시각화
fig, axes = plt.subplots(nrows=2, ncols=5, figsize=(10, 4))
for i, ax in enumerate(axes.flat):
ax.imshow(X_train[i].reshape(28, 28), cmap='gray')
ax.set(title = f"Number: {y_train[i]}")
plt.show()
pipeline = MNISTPipeline()
X, y = pipeline.load_data()
X_train, X_test, y_train, y_test = pipeline.preprocess_data(X, y)
pipeline.visualize_data(X_train, y_train)
pipeline.train_model(X_train, y_train)
y_pred = pipeline.predict(X_test)
acc, cm = pipeline.evaluate(y_test, y_pred)
print(f"Accuracy: {acc}")
print(f"Confusion matrix:\n{cm}")
위에서 작성한 코드는 머신러닝 파이프라인을 이용하여 MNIST 데이터를 학습하고 예측하는 예제입니다. 이 예제에서는 다음과 같은 과정을 거칩니다.
- 데이터를 불러오고 전처리합니다.
- 전처리한 데이터를 사용하여 모델을 학습시킵니다.
- 학습한 모델을 사용하여 테스트 데이터를 예측합니다.
- 예측 결과를 평가합니다.
위의 예제에서는 MNISTPipeline 클래스를 사용하여 파이프라인을 구현합니다. load_data 메소드는 fetch_openml 함수를 사용하여 데이터를 불러오고, preprocess_data 메소드에서 데이터를 전처리합니다. train_model 메소드에서는 LogisticRegression 모델을 학습시킵니다. predict 메소드에서는 학습한 모델을 사용하여 테스트 데이터를 예측합니다. evaluate 메소드에서는 예측 결과를 평가합니다. 마지막으로 visualize_data 메소드를 사용하여 학습 데이터를 시각화합니다.
위의 코드를 실행하면 파이프라인을 통해 MNIST 데이터를 학습하고 예측한 결과를 볼 수 있습니다. 이러한 방식으로 머신러닝 파이프라인을 이용하여 데이터 분석과 모델 학습을 자동화할 수 있습니다.
github: https://github.com/stevelee0503/ML_pipeline/blob/main/ML_Pipeline.ipynb
'인공지능(AI)' 카테고리의 다른 글
OPEN AI ChatGPT4 공개 (0) | 2023.03.15 |
---|---|
다음 주 ChatGPT4 출시 소식 (0) | 2023.03.12 |
딥러닝으로 병든 농작물 분류하는 웹앱 만들어보기 (0) | 2023.03.06 |
오픈 AI Whisper API 사용방법 (0) | 2023.03.02 |
인공지능이 대체할 가능성 높은 직업들 (0) | 2023.03.01 |
댓글