머신러닝을 할 때 기본적으로 인코딩, 결측값 처리, 훈련, 테스트 집합으로 분할 등 등 필수로 해야 하는 것들이 있다. 매번 같은 작업을 반복해 해주는것보다 파이프라인을 이용하면 더 편하다.
파이프라인은 데이터의 변환을 순차적으로 적용한 다음 학습을 할 수 있다. 파이프라인을 사용하면 직관적으로 흐름을 읽을 수 있으며 순서가 파이프라인에 의해 정해지고 만들기 간편하다.
파이프라인을 만드는 코드는 밑에 있다.
import pandas as pd
import numpy as np
from sklearn.datasets import load_wine
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import LabelEncoder
from sklearn.impute import SimpleImputer
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.metrics import classification_report
from sklearn.metrics import accuracy_score
# 와인 데이터 로드
wine = load_wine()
# feature 갖고온다.
wine_data = wine.data
# target 갖고온다.
wine_target = wine.target
# wine 데이터의 feature로 Dataframe을 만든다.
df_wine = pd.DataFrame(data = wine_data, columns=[wine.feature_names])
# feature 만 있는 데이터 프레임에 타겟 데이터를 추가한다.
df_wine_t = df_wine.copy()
df_wine['target'] = wine.target
# 데이터를 나눈다.
X_train, X_test, y_train, y_test = train_test_split(df_wine_t, wine_target, test_size=0.2)
# 수치형 특징의 리스트를 저장한다.
num_x_training = X_train.select_dtypes(include='number')\
.columns \
.to_list()
# 범주형 특징의 리스트를 저장한다.
cat_x_training = X_train.select_dtypes(include='object')\
.columns \
.to_list()
# ColumnTranformer 로 열 변환자 객체 정의
preprocessor = ColumnTransformer(transformers=[
('numeric', num_pipe_line, num_x_training),
('categoryical', cat_pipe_line, cat_x_training)
], remainder='drop')
dtc = DecisionTreeClassifier()
full_pipeline = Pipeline(steps=[('preprocessor', preprocessor),
('classifier', dtc)])
full_pipeline.fit(X_train, y_train)
y_pred = pipeline.predict(X_test)
accuracy_score(y_test, y_pred)
'머신러닝' 카테고리의 다른 글
머신러닝 분류 Classification 중 Decision Tree(결정 트리) (0) | 2021.02.24 |
---|---|
GridSearchCV의 Check the list of available parameters with `estimator.get_params().keys()` 에러 발생시 해결법 (0) | 2021.02.24 |
[파이썬 머신러닝] map으로 레이블 인코딩 하기 (0) | 2021.02.22 |
머신러닝 이진분류의 Evaluation 평가에 대해 알아보자(Accuracy, Precision, Recall, F1_Score, ROC_AUC) (1) | 2021.02.19 |
머신러닝 GridSearchCV 로 하이퍼 파라미터 학습과 최적화 (1) | 2021.02.19 |