데이터 전처리를 수행할 때 특정 컬럼들에 서로 다른 변환을 적용할 수 있는 방법을 제공한다. 서로 다른 데이터 타입(예: 숫자형, 범주형) 에 맞는 처리를 필요로 할 때 매우 효과적이다.

class sklearn.compose.ColumnTransformer(transformers, *, remainder='drop', sparse_threshold=0.3, n_jobs=None, transformer_weights=None, verbose=False, verbose_feature_names_out=True)

 

사용 방법:
`ColumnTransformer`는 `(이름, 변환기, 열)`의 튜플 리스트를 인자로 받습니다. 여기서 `이름`은 해당 변환 단계를 식별하는 문자열이고, `변환기`는 변환을 수행할 객체(예: 스케일러, 인코더), `열`은 해당 변환을 적용할 DataFrame의 열 이름이

나 인덱스입니다.

 

파라미터:

파라미터 설명 Default
transformers 변환기 목록을 (이름, 변환기, columns) 형태의 튜플로 지정 필수 입력 필요
remainder 변환되지 않은 나머지 열에 대한 처리 방식을 지정한다. passthrough, drop, 또는 estimator 객체를 사용할 수 있다. 'drop'
sparse_threshold 출력이 희소 행렬 형태로 반환될 임계값. 0과 1 사이의 값으로, 1은  희소 행렬이 반환되지 않음을 의미. 0.3
n_jobs 병렬 처리에 사용할 CPU 코어의 수. -1은 모든 코어를 사용하 None
transformer_weights 각 변환기에 가중치를 부여.  None
verbose 로그 출력 정도 설정 False
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.pipeline import make_pipeline
from sklearn.linear_model import LogisticRegression

# 데이터 로드
import seaborn as sns
data = sns.load_dataset('titanic').dropna()
X = data[['age', 'fare','embarked', 'sex']]
y = data['survived']

# ColumnTransformer 생성
column_transformer = ColumnTransformer(
    transformers=[
        ('num', StandardScaler(), ['age', 'fare']), # 수치형에는 standard
        ('cat', OneHotEncoder(), ['embarked', 'sex']) # 명목형은 onehot
    ]
)

# 파이프라인 생성
pipeline = make_pipeline(
    column_transformer,
    LogisticRegression()
)

# 데이터 분할
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 파이프라인을 사용한 훈련
pipeline.fit(X_train, y_train)
pipeline.score(X_test, y_test)
# 0.6486

# 성능 평가
print("Model accuracy:", pipeline.score(X_test, y_test))



'전처리' 카테고리의 다른 글

이상치 탐색  (2) 2024.06.08
변수선택법 - SelectKBest  (0) 2024.05.15
Sklearn Featureselection방법들  (2) 2023.12.28
itertools [변수선택, 유용한 함수]  (1) 2023.10.18
EDA 탐색적 데이터 분석  (0) 2023.10.06

+ Recent posts