소개
이 실습에서는 파이썬의 scikit-learn 라이브러리를 사용하여 여러 특징 추출 방법을 연결하는 방법을 배웁니다. PCA 와 단변량 선택으로 얻은 특징을 결합하기 위해 FeatureUnion 변환기를 사용합니다. 이 변환기를 사용하여 특징을 결합하면 전체 프로세스에 대한 교차 검증 및 그리드 검색을 수행할 수 있는 이점이 있습니다.
VM 팁
VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근합니다.
때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.
학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.
라이브러리 가져오기
필요한 라이브러리를 가져오는 것으로 시작합니다. scikit-learn 의 Pipeline, FeatureUnion, GridSearchCV, SVC, load_iris, PCA, 그리고 SelectKBest 클래스를 사용할 것입니다.
from sklearn.pipeline import Pipeline, FeatureUnion
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
from sklearn.feature_selection import SelectKBest
데이터셋 로드
다음으로 load_iris 함수를 사용하여 아이리스 데이터셋을 로드합니다.
iris = load_iris()
X, y = iris.data, iris.target
특징 추출
아이리스 데이터셋이 고차원이므로 PCA 와 단변량 선택을 사용하여 특징 추출을 수행합니다.
PCA
PCA 를 사용하여 데이터셋의 차원을 줄입니다.
pca = PCA(n_components=2)
단변량 선택
가장 중요한 특징을 선택하기 위해 단변량 선택을 사용합니다.
selection = SelectKBest(k=1)
결합된 특징
PCA 와 단변량 선택에서 얻은 특징을 FeatureUnion 변환기를 사용하여 결합합니다.
combined_features = FeatureUnion([("pca", pca), ("univ_select", selection)])
변환된 데이터셋
결합된 특징을 사용하여 데이터셋을 변환합니다.
X_features = combined_features.fit(X, y).transform(X)
print("결합된 공간에는", X_features.shape[1], "개의 특징이 있습니다")
모델 학습
변환된 데이터셋을 사용하여 서포트 벡터 머신 (SVM) 모델을 학습합니다.
svm = SVC(kernel="linear")
그리드 검색
GridSearchCV를 사용하여 파이프라인의 하이퍼파라미터에 대한 그리드 검색을 수행합니다.
pipeline = Pipeline([("features", combined_features), ("svm", svm)])
param_grid = dict(
features__pca__n_components=[1, 2, 3],
features__univ_select__k=[1, 2],
svm__C=[0.1, 1, 10],
)
grid_search = GridSearchCV(pipeline, param_grid=param_grid, verbose=10)
grid_search.fit(X, y)
print(grid_search.best_estimator_)
요약
이 실험에서 파이썬의 scikit-learn 라이브러리를 사용하여 여러 특징 추출 방법을 연결하는 방법을 배웠습니다. PCA 와 단변량 선택으로 얻은 특징들을 결합하기 위해 FeatureUnion 변환기를 사용했습니다. 또한 서포트 벡터 머신 (SVM) 모델을 학습하고 파이프라인의 하이퍼파라미터에 대한 그리드 검색을 수행했습니다.