Python 파이프라인의 특성
소개
나는 최근에 파이썬 파이프라인을 배웠다. 특히 기술 노트의 가독성과 전반적인 코딩에 매우 유용합니다. 그런데 파이프라인에 포함된 요소의 속성을 꺼내는 큰 문제가 발생했습니다.
강사의 도움과 인터넷 검색으로 어려움은 새로운 것을 배우는 소중한 경험으로 바뀌었습니다.
데이터
이 게시물에 어떤 데이터가 사용되었는지 간단히 살펴보겠습니다. 데이터는 National 2009 H1N1 Flu Survey에서 가져온 것입니다. 링크는 변수 이름을 볼 수 있는 페이지로 연결됩니다. 이번 조사의 목적은 신종플루 예방접종률과 응답자의 범주를 알아보는 것이다. 이는 이 게시물의 뒷부분에서 파이프라인의 출력을 이해하는 데 도움을 주기 위한 것입니다.
파이프라인의 요소
요소는 실제로 파이프라인에서 "단계"라고 합니다. 각 단계는 인코더, 샘플링 또는 기계 학습(분류, 회귀 등)이 될 수 있습니다. 단계에서는 인코더로 OneHotEncoder과 분류기로 RandomForestClassifier을 사용합니다.
속성
OneHotEncoder
아래는 인코더를 인스턴스화하는 파이썬 코드입니다. 결과는 더 나은 조직을 위해 게시물 끝에 모두 정리됩니다.
# import libraries for columns transformation
from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer
# instantiate encoders
ohe = OneHotEncoder(sparse=False, handle_unknown='ignore')
# apply encoding to just one column in the data
# to reduce complexity in the results
ct = ColumnTransformer([('age', ohe, ['age_group'])],
remainder='passthrough')
곧 돌아올 예정이니 ct를 기억해주세요.
RandomForestClassifier
분류자를 위한 또 다른 파이썬 코드.
from sklearn.ensemble import RandomForestClassifier
이 섹션은 여기까지입니다! 코딩의 추가 단계가 곧 올 것입니다.
결과
OneHotEncoder
인코더의 유용한 기능 또는 속성 중 하나는 get_feature_names()입니다. 그러면 인코딩과 관련된 모든 변수 이름이 표시됩니다. 코드와 출력을 살펴보겠습니다. 위의 CT가 돌아왔다는 것을 기억하세요.
ct.get_feature_names()
연령 열이 성공적으로 인코딩되었습니다. 파이프라인을 사용하면 어떻게 될까요? 먼저 파이프라인을 인스턴스화하겠습니다.
# import library
from imblearn.pipeline import Pipeline
# instantiate pipeline using column transformer and
# model from classifier
pipe2 = Pipeline(steps=[('ct', ct),
('rfc', RandomForestClassifier(random_state=1,
max_depth = 9))
]
)
pipe2.fit(X_train_labeled, y_train)
파이프라인 모델인 pipe2는 이 포스트에서 여러 번 돌아올 예정이니 주목해주세요. 다음은 마법 코드입니다.
pipe2.steps[0][1].get_feature_names()
방금 무슨 일이 일어났나요? 파이프라인은 수행된 단계를 표시할 수 있으며 각 단계가 호출된 후 각 단계의 특성을 사용할 수 있습니다.
위 이미지에서 볼 수 있듯이 파이프라인 단계는 튜플 목록으로 저장됩니다. 아래 그림과 같이 각 단계를 호출할 수 있습니다.
그런 다음 사용 가능한 속성을 사용하여 필요한 정보를 얻을 수 있습니다.
RancomForestClassifier
분류기로 반복하겠습니다. 파이프라인 없이 시작해 봅시다.
rfc=RandomForestClassifier(random_state=1, max_depth = 9)
X_train_labeled_ct = ct.fit_transform(X_train_labeled)
rfc.fit(X_train_labeled_ct, y_train)
rfc.feature_importances_
여기 파이프라인이 있는 것이 있습니다.
일단 파이프라인이 선언되면 코딩이 단순화되는 것을 볼 수 있습니다.
신청
위의 결과를 사용하여 아래와 같이 할 수 있습니다!
# graph of the features sorted by the impact level on the analysis
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
# extract feature importance scores and feature names
# then merge them
feat_impt = pd.concat([pd.DataFrame(pipe2.steps[1][1].feature_importances_,
columns = ['FI_score']),
pd.DataFrame(pipe2.steps[0][1].get_feature_names(),
columns = ['Features'])],
axis = 1
)
# sort descending by importance
feat_impt.sort_values(by = 'FI_score', inplace=True)
# print graph of the top 20 important features
plt.figure(figsize=(8,9))
plt.barh(range(20), feat_impt.FI_score[-20:], align='center')
plt.yticks(np.arange(20), feat_impt.Features[-20:])
plt.xlabel('Feature importance')
plt.ylabel('Feature');
Reference
이 문제에 관하여(Python 파이프라인의 특성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ddjh20482/attributes-from-python-pipeline-4dem텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)