파이프라인: 노트북 청소

3088 단어

소개



일반적으로 기계 학습 모델을 생성할 때 기본 모델이 내 데이터에서 어떻게 수행되는지 아이디어를 얻기 위해 여러 모델을 실제로 실행합니다. 이 작업을 수행할 때마다 노트북이 엉망이 되고 계속 위아래로 스크롤하여 각 모델의 이름을 지정하고 성능이 어떤지 확인하여 이웃 모델과 비교할 수 있기 때문에 계속 노력하고 있습니다. Scikit Learn의 파이프라인이라는 멋진 도구를 구현하여 엉망진창을 정리하고 더 깔끔한 노트북을 만들 수 있습니다. 이것이 반드시 이 도구의 유일한 사용 또는 논쟁의 여지가 있는 최선의 사용은 아니지만, 저에게 유용한 것이므로 공유하고 싶습니다.

관로?



너무 앞서 나가서 Pipeline을 사용하는 방법을 보여드리기 전에 Pipeline이 하는 일에 대해 좀 더 자세히 설명해야 합니다. Scikit Learn 웹사이트에 따르면 "파이프라인의 목적은 서로 다른 매개변수를 설정하면서 함께 교차 검증할 수 있는 여러 단계를 조합하는 것입니다."이것이 말하는 것은 전처리기와 모델을 동일한 파이프라인에 함께 둘 수 있으므로 다른 모델을 빠르게 평가할 수 있다는 것입니다. 그래서 그것을 밖으로 시도하자!

예시



시작하려면 모든 라이브러리와 도구를 가져와야 하며 다양한 분류기를 사용해 볼 수 있습니다.

import numpy as np
import pandas as pd
from sklearn.svm import SVC
from sklearn.pipeline import Pipeline
from sklearn.datasets import load_wine
from sklearn.metrics import accuracy_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier


이제 데이터를 로드할 수 있습니다. 이전 게시물에서 했던 것처럼 레이아웃과 액세스 용이성을 위해 Pandas를 사용하는 것을 정말 좋아합니다.

wine = load_wine()
data = pd.DataFrame(data= np.c_[wine['data'], wine['target']],
                     columns= wine['feature_names'] + ['target'])
data.describe()




멋진 데이터가 모두 로드된 상태에서 분할을 수행한 다음 파이프라인을 실행할 수 있습니다.

X=data.drop('target',axis=1)
y=data['target']
Xtrain, Xtest, ytrain, ytest = train_test_split(X,y)


파이프라인 설정은 놀라울 정도로 쉽습니다. 이를 위한 형식은 파이프라인 도구를 호출한 다음 실행할 전처리 프로세스의 이름을 입력하고 모델에 대해 동일한 작업을 수행하기만 하면 됩니다. 여기서는 여러 분류자를 실행하고 있기 때문에 목록에 추가한 다음 파이프라인 도구가 이를 통해 반복하도록 합니다.

classifiers = [
    KNeighborsClassifier(3),
    SVC(kernel="rbf", C=0.025, probability=True),
    DecisionTreeClassifier(),
    RandomForestClassifier(),
    GradientBoostingClassifier()
    ]

for c in classifiers:
    pl = Pipeline([('standard scaler', StandardScaler()), ('models', c)])
    pl.fit(Xtrain,ytrain)
    print(f"{c.__class__.__name__} has a score of {round(pl.score(Xtest,ytest),2)}")




이제 모든 모델을 동일한 공간에서 실행하여 쉽게 초기 비교를 할 수 있습니다. 이와 같은 파이프라인을 생성하는 또 다른 훌륭한 용도는 몇 가지 다른 하이퍼 매개변수로 동일한 모델을 빠르게 실행하여 모델에 미치는 영향을 확인하려는 경우입니다. 사용하려는 모델을 찾은 경우에도 마찬가지입니다. 하이퍼 파라미터 최적화를 위해 장기적으로 Grid Search를 추천합니다.

좋은 웹페이지 즐겨찾기