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