Scikit-learn 을 이용한 머신러닝 파이프라인 구축

Beginner

This tutorial is from open-source community. Access the source code

소개

머신 러닝에서 파이프라인은 입력 데이터를 변환하고 모델을 구축하기 위해 순차적으로 수행되는 일련의 단계입니다. Scikit-learn 은 여러 처리 단계를 연결하여 복잡한 모델을 쉽게 구축할 수 있는 파이프라인 클래스를 제공합니다. 이는 여러 전처리 및 모델링 단계를 포함하는 복잡한 모델을 구축하는 데 유용합니다.

이 튜토리얼에서는 Scikit-learn 을 사용하여 특징 선택 및 SVM 분류를 포함하는 파이프라인을 구축하는 방법을 보여줍니다. 파이프라인 내에 특징 선택을 통합하여 과적합을 방지하는 방법과 모델을 더 잘 이해하기 위해 파이프라인을 검사하는 방법을 보여줍니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근할 수 있습니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.

학습 중 문제가 발생하면 Labby 에 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

데이터셋 생성 및 분할

Scikit-learn 의 make_classification 함수를 사용하여 이진 분류 데이터셋을 생성하고, Scikit-learn 의 train_test_split 함수를 사용하여 데이터셋을 학습 및 테스트 서브셋으로 분할합니다.

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

X, y = make_classification(
    n_features=20,
    n_informative=3,
    n_redundant=0,
    n_classes=2,
    n_clusters_per_class=2,
    random_state=42,
)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

파이프라인 구축

이제 특징 선택 및 SVM 분류로 구성된 파이프라인을 구축합니다. Scikit-learn 의 SelectKBest 함수를 특징 선택에 사용하고, Scikit-learn 의 LinearSVC 함수를 SVM 분류에 사용합니다. SelectKBest 함수는 각 특징과 대상 변수 간의 ANOVA F-값을 계산하는 f_classif 방법을 기반으로 가장 정보가 풍부한 k개의 특징을 선택합니다. 이 예제에서는 k=3으로 설정합니다.

from sklearn.feature_selection import SelectKBest, f_classif
from sklearn.pipeline import make_pipeline
from sklearn.svm import LinearSVC

anova_filter = SelectKBest(f_classif, k=3)
clf = LinearSVC(dual="auto")
anova_svm = make_pipeline(anova_filter, clf)

파이프라인 학습

이제 fit 메서드를 사용하여 학습 서브셋에서 파이프라인을 학습합니다. 학습 중 SelectKBest 함수는 ANOVA F-값을 기반으로 가장 정보가 풍부한 3 개의 특징을 선택하고, LinearSVC 함수는 선택된 특징에 선형 SVM 분류기를 학습합니다.

anova_svm.fit(X_train, y_train)

파이프라인 평가

이제 predict 메서드를 사용하여 테스트 서브셋에서 파이프라인을 평가합니다. 파이프라인은 ANOVA F-값을 기반으로 가장 정보가 풍부한 3 개의 특징을 선택하고, LinearSVC 함수는 선택된 특징에 대한 예측을 수행합니다.

from sklearn.metrics import classification_report

y_pred = anova_svm.predict(X_test)
print(classification_report(y_test, y_pred))

파이프라인 검사

모델을 더 잘 이해하기 위해 파이프라인을 검사할 수 있습니다. 선택된 특징의 인덱스를 사용하여 원래 특징 이름을 검색할 수 있습니다.

anova_svm[:-1].inverse_transform(anova_svm[-1].coef_)

요약

이 튜토리얼에서는 Scikit-learn 을 사용하여 특징 선택 및 SVM 분류를 포함하는 파이프라인을 구축하는 방법을 보여주었습니다. 파이프라인 내에 특징 선택을 통합하여 과적합을 방지하는 방법과 파이프라인을 검사하여 모델을 더 잘 이해하는 방법을 보여주었습니다. 파이프라인은 모듈식이고 효율적인 방식으로 복잡한 모델을 구축하는 강력한 도구입니다.