소개
머신 러닝에서 파이프라인은 입력 데이터를 변환하고 모델을 구축하기 위해 순차적으로 수행되는 일련의 단계입니다. 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 분류를 포함하는 파이프라인을 구축하는 방법을 보여주었습니다. 파이프라인 내에 특징 선택을 통합하여 과적합을 방지하는 방법과 파이프라인을 검사하여 모델을 더 잘 이해하는 방법을 보여주었습니다. 파이프라인은 모듈식이고 효율적인 방식으로 복잡한 모델을 구축하는 강력한 도구입니다.