에서 생성 한 변환 된 배열의 열을 어떻게 추적 sklearn.compose.ColumnTransformer
합니까? "추적"이란 역변환을 수행하는 데 필요한 모든 정보가 명시 적 으로 표시 되어야 함을 의미합니다 . 여기에는 최소한 다음이 포함됩니다.
이 답변을 기반으로 동일한 접근 방식을 사용하고 있습니다. 내 입력 데이터 세트는 pandas.DataFrame
여러 숫자 및 범주 열이 있는 일반 입니다. 예, 그 대답은 원시 데이터 세트를 변환 할 수 있습니다. 하지만 출력 배열의 열을 추적하지 못했습니다. 동료 검토, 보고서 작성, 프레젠테이션 및 추가 모델 구축 단계를 위해 이러한 정보가 필요합니다. 체계적인 접근 방식을 찾고 있었지만 운이 없었습니다.
언급 한 답변 은 Sklearn의 이를 기반으로 합니다 .
다음 스 니펫을 사용하여 처음 두 질문에 대한 답을 얻을 수 있습니다.
def get_feature_names(columnTransformer):
output_features = []
for name, pipe, features in columnTransformer.transformers_:
if name!='remainder':
for i in pipe:
trans_features = []
if hasattr(i,'categories_'):
trans_features.extend(i.get_feature_names(features))
else:
trans_features = features
output_features.extend(trans_features)
return output_features
import pandas as pd
pd.DataFrame(preprocessor.fit_transform(X_train),
columns=get_feature_names(preprocessor))
transformed_cols = get_feature_names(preprocessor)
def get_original_column(col_index):
return transformed_cols[col_index].split('_')[0]
get_original_column(3)
# 'embarked'
get_original_column(0)
# 'age'
def get_category(col_index):
new_col = transformed_cols[col_index].split('_')
return 'no category' if len(new_col)<2 else new_col[-1]
print(get_category(3))
# 'Q'
print(get_category(0))
# 'no category'
현재 버전의 Sklearn에서는 기능에 대해 일부 대치 또는 확장이 수행되었는지 여부를 추적하는 것이 간단하지 않습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다