소개
이 실습은 Scikit-Learn 에서 파이프라인을 구축하고 표시하는 방법에 대한 단계별 가이드입니다.
VM 팁
VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근할 수 있습니다.
때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.
학습 중 문제가 발생하면 Labby 에 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.
전처리 단계와 분류기를 포함한 간단한 파이프라인 구축
이 단계에서는 전처리 단계와 분류기를 포함한 간단한 파이프라인을 구축하고 시각적 표현을 보여줍니다.
먼저 필요한 모듈을 가져옵니다.
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn import set_config
다음으로 파이프라인의 단계를 정의합니다.
steps = [
("preprocessing", StandardScaler()),
("classifier", LogisticRegression()),
]
그런 다음 파이프라인을 생성합니다.
pipe = Pipeline(steps)
마지막으로 파이프라인의 시각적 표현을 보여줍니다.
set_config(display="diagram")
pipe
여러 전처리 단계와 분류기를 연결한 파이프라인 구축
이 단계에서는 여러 전처리 단계와 분류기를 포함한 파이프라인을 구축하고 시각적 표현을 보여줍니다.
먼저 필요한 모듈을 가져옵니다.
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler, PolynomialFeatures
from sklearn.linear_model import LogisticRegression
다음으로 파이프라인의 단계를 정의합니다.
steps = [
("standard_scaler", StandardScaler()),
("polynomial", PolynomialFeatures(degree=3)),
("classifier", LogisticRegression(C=2.0)),
]
그런 다음 파이프라인을 생성합니다.
pipe = Pipeline(steps)
마지막으로 파이프라인의 시각적 표현을 보여줍니다.
pipe
차원 축소 및 분류기를 포함한 파이프라인 구축
이 단계에서는 차원 축소 단계와 분류기를 포함한 파이프라인을 구축하고 시각적 표현을 보여줍니다.
먼저 필요한 모듈을 가져옵니다.
from sklearn.pipeline import Pipeline
from sklearn.svm import SVC
from sklearn.decomposition import PCA
다음으로 파이프라인의 단계를 정의합니다.
steps = [("reduce_dim", PCA(n_components=4)), ("classifier", SVC(kernel="linear"))]
그런 다음 파이프라인을 생성합니다.
pipe = Pipeline(steps)
마지막으로 파이프라인의 시각적 표현을 보여줍니다.
pipe
열 변환기를 연결한 복잡한 파이프라인 구축
이 단계에서는 열 변환기와 분류기를 결합한 복잡한 파이프라인을 구축하고 시각적 표현을 보여줍니다.
먼저 필요한 모듈을 가져옵니다.
import numpy as np
from sklearn.pipeline import make_pipeline
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.linear_model import LogisticRegression
다음으로 숫자형 및 범주형 특징에 대한 전처리 단계를 정의합니다.
numeric_preprocessor = Pipeline(
steps=[
("imputation_mean", SimpleImputer(missing_values=np.nan, strategy="mean")),
("scaler", StandardScaler()),
]
)
categorical_preprocessor = Pipeline(
steps=[
(
"imputation_constant",
SimpleImputer(fill_value="missing", strategy="constant"),
),
("onehot", OneHotEncoder(handle_unknown="ignore")),
]
)
그런 다음 열 변환기를 생성합니다.
preprocessor = ColumnTransformer(
[
("categorical", categorical_preprocessor, ["state", "gender"]),
("numerical", numeric_preprocessor, ["age", "weight"]),
]
)
다음으로 파이프라인을 생성합니다.
pipe = make_pipeline(preprocessor, LogisticRegression(max_iter=500))
마지막으로 파이프라인의 시각적 표현을 보여줍니다.
pipe
분류기를 포함한 파이프라인에 대한 그리드 검색 구축
이 단계에서는 분류기를 포함한 파이프라인에 대한 그리드 검색을 구축하고 시각적 표현을 보여줍니다.
먼저 필요한 모듈을 가져옵니다.
import numpy as np
from sklearn.pipeline import make_pipeline
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
다음으로 숫자형 및 범주형 특징에 대한 전처리 단계를 정의합니다.
numeric_preprocessor = Pipeline(
steps=[
("imputation_mean", SimpleImputer(missing_values=np.nan, strategy="mean")),
("scaler", StandardScaler()),
]
)
categorical_preprocessor = Pipeline(
steps=[
(
"imputation_constant",
SimpleImputer(fill_value="missing", strategy="constant"),
),
("onehot", OneHotEncoder(handle_unknown="ignore")),
]
)
그런 다음 열 변환기를 생성합니다.
preprocessor = ColumnTransformer(
[
("categorical", categorical_preprocessor, ["state", "gender"]),
("numerical", numeric_preprocessor, ["age", "weight"]),
]
)
다음으로 파이프라인을 생성합니다.
pipe = Pipeline(
steps=[("preprocessor", preprocessor), ("classifier", RandomForestClassifier())]
)
그런 다음 그리드 검색을 위한 매개변수 그리드를 정의합니다.
param_grid = {
"classifier__n_estimators": [200, 500],
"classifier__max_features": ["auto", "sqrt", "log2"],
"classifier__max_depth": [4, 5, 6, 7, 8],
"classifier__criterion": ["gini", "entropy"],
}
마지막으로 그리드 검색을 생성합니다.
grid_search = GridSearchCV(pipe, param_grid=param_grid, n_jobs=1)
그리드 검색의 시각적 표현을 보여줍니다.
grid_search
요약
이 실습에서는 Scikit-Learn 에서 파이프라인을 구축하고 표시하는 단계별 가이드를 제공했습니다. 전처리 단계와 분류기를 포함한 단순 파이프라인, 여러 전처리 단계와 분류기를 연결한 파이프라인, 차원 축소와 분류기를 포함한 파이프라인, 열 변환기와 분류기를 연결한 복잡한 파이프라인, 그리고 분류기를 포함한 파이프라인에 대한 그리드 검색을 다루었습니다.