반응형
1. 파이프라인 개념
- Pipeline은 데이터 전처리에서 학습까지의 여러 과정을 하나로 연결하는 것입니다.
- 데이터 전 처리 및 분류의 모든 단계를 포함하는 단일 개체를 만들 수 있습니다.
파이프라인을 사용할 때와 사용하지 않았을 때를 코딩해서 비교해서 확인하고자 합니다.
- 필요한 모듈을 import 하고, iris 데이터 셑을 불러옵니다.
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score, classification_report
iris = datasets.load_iris() #iris 데이터를 불러옴
|
- 학습데이터와 검증데이터를 나눕니다.
# iris 데이터 셑을 학습용과 검증용 데이터 셑으로 나눔
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=2222)
|
2. 파이프라인을 사용하지 않은 모델링
- 파이프라인을 사용하지 않고 SVM으로 모델링한 결과 입니다. 정확도는 95.5%입니다.
SVM 모델링은 https://withdatastory.tistory.com/59 참조하세요.
#표준정규분포로 스케일링
sc = StandardScaler()
X_train_sc = sc.fit_transform(X_train)
X_test_sc = sc.transform(X_test)
svc = SVC(kernel='poly', C = 3, degree = 3).fit(X_train_sc, y_train) #SVM모델로 모델링
y_pred = svc.predict(X_test_sc) #예측
print("정확도", accuracy_score(y_test, y_pred))
print("classification report", classification_report(y_test, y_pred))
|
3. 파이프라인을 사용
- pipline은 라이브러리를 import합니다. 파이프라인은 표준화->모형학습 두 단계를 가정합니다.
- Pipeline 사용법은 '작업명':작업클래스 두개로 이루어진 튜플을 리스트로 담아서 Pipeline에 지정해야 합니다.
- 아래의 예는 StandardScaler()의 이름을 scaler로 지정하고, SVC 클래스의 이름을 model로 지정하였습니다
Pipeline([('작업명1', 작업클래스), ('작업명2', 작업클래스2), ......])
from sklearn.pipeline import Pipeline
pipe = Pipeline([('scaler', StandardScaler()), ('model', SVC(kernel='poly', C = 3, degree = 3))])
pipe.fit(X_train, y_train)
y_pred = pipe.predict(X_test)
print("정확도", accuracy_score(y_test, y_pred))
print("classification report", classification_report(y_test, y_pred))
|
파이프라인을 사용하면, 머신러닝하는 여러 단계를 하나로 연결할 수 있어, 편리하게 사용할 수 있습니다. 위 두 개의 코딩을 비교하고, 결과는 정확도 95.5%로 동일하게 나왔습니다.
'데이터분석 > 데이터 분류 및 군집화' 카테고리의 다른 글
서포트 벡터 머신(SVM)을 활용한 분류모형 (0) | 2023.11.24 |
---|---|
Random Forest와 XGBoost(eXtreme Gradient Boosting) (0) | 2023.11.15 |
앙상블(Ensemble)의 기본개념 및 Bagging 예제 (0) | 2023.11.15 |
의사결정나무를 이용한 분류모형 (0) | 2023.10.25 |
분류모형의 성능평가 (0) | 2023.10.22 |