Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 회귀
- 데이터 전처리
- 차원 축소
- 인공 신경망
- 손실 함수
- 과적합
- 교차 검증
- Machine Learning
- 활성화 함수
- 딥러닝
- 인공지능
- 머신 러닝
- LSTM
- 자연어 처리
- 강화 학습
- reinforcement learning
- Q-Learning
- 머신러닝
- Deep learning
- 지도 학습
- 강화학습
- python
- 신경망
- q-러닝
- rnn
- 최적화
- GRU
- AI
- CNN
- 정규화
Archives
- Today
- Total
move84
머신러닝 전처리 자동화 도구 소개 (scikit-learn 파이프라인) 본문
반응형
머신러닝 모델을 개발할 때 데이터 전처리 과정은 매우 중요합니다. 데이터 전처리는 모델의 성능을 향상시키고, 과적합을 방지하는 데 도움을 줍니다. 이 글에서는 scikit-learn 파이프라인을 사용하여 머신러닝 전처리 과정을 자동화하는 방법을 소개합니다. 파이프라인을 사용하면 여러 전처리 단계를 순차적으로 연결하여 코드를 간결하게 유지하고, 모델 개발 과정을 효율적으로 관리할 수 있습니다.
---
🛠️ **Scikit-learn 파이프라인 소개**
Scikit-learn 파이프라인은 여러 개의 변환기(transformer)와 하나의 추정기(estimator)를 연결하여 머신러닝 워크플로우를 자동화하는 도구입니다. 변환기는 데이터를 변환하는 역할을 하며 (예: StandardScaler, MinMaxScaler), 추정기는 최종적으로 모델을 학습하고 예측하는 역할을 합니다 (예: LogisticRegression, RandomForestClassifier). 파이프라인을 사용하면 데이터 전처리, 특성 추출, 모델 학습 등의 단계를 하나의 객체로 묶어 관리할 수 있습니다.
파이프라인의 장점은 다음과 같습니다.
* **코드 간결성**: 여러 단계의 전처리를 하나의 파이프라인으로 묶어 코드를 간결하게 유지합니다.
* **재사용성**: 파이프라인을 한 번 정의하면 동일한 전처리 단계를 여러 번 반복할 필요가 없습니다.
* **오류 감소**: 전처리 단계를 수동으로 적용할 때 발생할 수 있는 실수를 줄여줍니다.
* **교차 검증 용이성**: 파이프라인을 교차 검증과 함께 사용하여 모델의 성능을 더욱 정확하게 평가할 수 있습니다.
---
⚙️ **파이프라인 구성 요소**
파이프라인은 여러 개의 단계를 순차적으로 연결하여 구성됩니다. 각 단계는 변환기 또는 추정기로 이루어집니다. Scikit-learn에서 제공하는 주요 변환기는 다음과 같습니다.
* **StandardScaler**: 데이터를 평균이 0, 분산이 1이 되도록 정규화합니다.
* **MinMaxScaler**: 데이터를 0과 1 사이의 값으로 정규화합니다.
* **OneHotEncoder**: 범주형 데이터를 one-hot 벡터로 변환합니다.
* **SimpleImputer**: 결측값을 특정 값으로 대체합니다.
* **PolynomialFeatures**: 다항 특성을 생성합니다.
* **PCA**: 주성분 분석을 통해 차원을 축소합니다.
파이프라인의 마지막 단계는 추정기입니다. 추정기는 데이터를 학습하여 예측 모델을 생성합니다. Scikit-learn에서 제공하는 주요 추정기는 다음과 같습니다.
* **LogisticRegression**: 로지스틱 회귀 모델을 학습합니다.
* **LinearRegression**: 선형 회귀 모델을 학습합니다.
* **DecisionTreeClassifier**: 결정 트리 모델을 학습합니다.
* **RandomForestClassifier**: 랜덤 포레스트 모델을 학습합니다.
* **SVC**: 서포트 벡터 머신 모델을 학습합니다.
---
🧪 **파이프라인 예제 코드**
다음은 Scikit-learn 파이프라인을 사용하여 데이터 전처리와 모델 학습을 자동화하는 예제 코드입니다.
```python
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import OneHotEncoder
import pandas as pd
# 데이터 로드
iris = load_iris()
X = iris.data
y = iris.target
# 데이터프레임으로 변환 (결측치 처리를 위해)
X = pd.DataFrame(X, columns=iris.feature_names)
# 일부 데이터를 결측치로 만들기
import numpy as np
X.iloc[:10, 0] = np.nan # 처음 10개 행의 첫 번째 열을 결측치로 설정
X['categorical_feature'] = ['A', 'B', 'A', 'C', 'B'] * 30 # 범주형 특성 추가
# 학습 데이터와 테스트 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 파이프라인 정의
# 1. 결측치 처리 (SimpleImputer)
# 2. 범주형 변수 처리 (OneHotEncoder)
# 3. 스케일링 (StandardScaler)
# 4. 로지스틱 회귀 (LogisticRegression)
pipeline = Pipeline([
('imputer', SimpleImputer(strategy='mean')), # 결측치를 평균값으로 대체
('onehot', OneHotEncoder(handle_unknown='ignore')), # 범주형 변수를 one-hot encoding
('scaler', StandardScaler()), # 데이터를 스케일링
('classifier', LogisticRegression(random_state=42, solver='liblinear', multi_class='auto')) # 로지스틱 회귀 모델
])
# 파이프라인 학습
pipeline.fit(X_train, y_train)
# 테스트 데이터 예측
y_pred = pipeline.predict(X_test)
# 정확도 평가
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
```
이 코드는 iris 데이터셋을 로드하고, 일부 데이터를 결측치로 만든 다음, SimpleImputer를 사용하여 결측치를 평균값으로 대체합니다. 또한, OneHotEncoder를 사용하여 범주형 데이터를 one-hot 벡터로 변환하고, StandardScaler를 사용하여 데이터를 정규화합니다. 마지막으로, LogisticRegression을 사용하여 모델을 학습하고 예측합니다.
---
✨ **파이프라인 활용 팁**
1. **GridSearchCV와 함께 사용**: GridSearchCV를 사용하여 파이프라인의 각 단계에 대한 최적의 하이퍼파라미터를 탐색할 수 있습니다. 예를 들어, StandardScaler의 `with_mean` 또는 `with_std` 값을 조정하거나, LogisticRegression의 `C` 값을 조정할 수 있습니다.
2. **ColumnTransformer와 함께 사용**: ColumnTransformer를 사용하면 데이터의 각 열에 대해 서로 다른 변환기를 적용할 수 있습니다. 예를 들어, 숫자형 열에는 StandardScaler를 적용하고, 범주형 열에는 OneHotEncoder를 적용할 수 있습니다.
3. **Custom Transformer**: 사용자 정의 변환기를 만들어 파이프라인에 추가할 수 있습니다. 예를 들어, 특정 특성 공학(feature engineering) 기법을 적용하는 변환기를 만들 수 있습니다.
4. **make_pipeline 함수**: make_pipeline 함수를 사용하면 파이프라인을 더욱 간결하게 만들 수 있습니다. make_pipeline은 변환기와 추정기를 순서대로 입력받아 파이프라인을 생성합니다.
```python
from sklearn.pipeline import make_pipeline
pipeline = make_pipeline(StandardScaler(), LogisticRegression(random_state=42))
```
---
📚 **핵심 용어 정리**
* **파이프라인 (Pipeline)**: 여러 단계를 순차적으로 연결하여 머신러닝 워크플로우를 자동화하는 도구. (Pipeline: A tool to automate machine learning workflows by connecting multiple steps sequentially.)
* **변환기 (Transformer)**: 데이터를 변환하는 역할. (Transformer: A component that transforms data.)
* **추정기 (Estimator)**: 최종적으로 모델을 학습하고 예측하는 역할. (Estimator: A component that trains and predicts the model.)
* **결측값 (Missing Value)**: 데이터에 존재하지 않는 값. (Missing Value: A value that is absent in the data.)
* **특성 공학 (Feature Engineering)**: 기존 특성을 사용하여 새로운 특성을 생성하는 과정. (Feature Engineering: The process of creating new features using existing features.)
* **교차 검증 (Cross-Validation)**: 모델의 성능을 평가하는 방법. (Cross-Validation: A method for evaluating the performance of a model.)
반응형
'머신러닝' 카테고리의 다른 글
TensorFlow Keras API 개요 (0) | 2025.04.15 |
---|---|
머신러닝: PyTorch 텐서 기본 연산 (0) | 2025.04.15 |
Transformer 구조 이해 (0) | 2025.04.14 |
머신러닝: 어텐션 메커니즘(Attention Mechanism) 완벽 분석 (0) | 2025.04.14 |
머신러닝: GRU(Gated Recurrent Unit)란? (0) | 2025.04.14 |