set_output API 사용법

Beginner

This tutorial is from open-source community. Access the source code

소개

이 실습에서는 Scikit-Learn 의 set_output API 를 사용하여 변환기를 구성하여 pandas DataFrame 을 출력하는 방법을 배웁니다. 이 기능은 Scikit-Learn 에서 이종 데이터 및 파이프라인을 다룰 때 유용합니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접속합니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업 검증은 자동화될 수 없습니다.

학습 중 문제가 발생하면 Labby 에 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

Iris 데이터셋 로드

먼저, set_output API 를 보여주기 위해 Iris 데이터셋을 DataFrame 으로 로드합니다.

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

X, y = load_iris(as_frame=True, return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=0)
X_train.head()

DataFrame 출력을 위한 변환기 설정

preprocessing.StandardScaler와 같은 추정기를 DataFrame 을 반환하도록 설정하려면 set_output를 호출합니다.

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler().set_output(transform="pandas")

scaler.fit(X_train)
X_test_scaled = scaler.transform(X_test)
X_test_scaled.head()

fittransform 설정

set_outputfit 이후에 호출하여 사후에 transform을 설정할 수 있습니다.

scaler2 = StandardScaler()

scaler2.fit(X_train)
X_test_np = scaler2.transform(X_test)
print(f"Default output type: {type(X_test_np).__name__}")

scaler2.set_output(transform="pandas")
X_test_df = scaler2.transform(X_test)
print(f"Configured pandas output type: {type(X_test_df).__name__}")

파이프라인을 DataFrame 출력으로 설정

pipeline.Pipeline에서 set_output를 사용하면 모든 단계가 DataFrame 을 출력하도록 설정됩니다.

from sklearn.pipeline import make_pipeline
from sklearn.linear_model import LogisticRegression
from sklearn.feature_selection import SelectPercentile

clf = make_pipeline(
    StandardScaler(), SelectPercentile(percentile=75), LogisticRegression()
)
clf.set_output(transform="pandas")
clf.fit(X_train, y_train)

타이타닉 데이터셋 로드

다음으로, compose.ColumnTransformer와 이종 데이터를 사용하여 set_output를 보여주기 위해 타이타닉 데이터셋을 로드합니다.

from sklearn.datasets import fetch_openml

X, y = fetch_openml(
    "titanic", version=1, as_frame=True, return_X_y=True, parser="pandas"
)
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y)

set_output를 전역적으로 설정

set_output API 는 set_config를 사용하여 transform_output"pandas"로 설정하여 전역적으로 설정할 수 있습니다.

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.impute import SimpleImputer
from sklearn import set_config

set_config(transform_output="pandas")

num_pipe = make_pipeline(SimpleImputer(), StandardScaler())
num_cols = ["age", "fare"]
ct = ColumnTransformer(
    (
        ("numerical", num_pipe, num_cols),
        (
            "categorical",
            OneHotEncoder(
                sparse_output=False, drop="if_binary", handle_unknown="ignore"
            ),
            ["embarked", "sex", "pclass"],
        ),
    ),
    verbose_feature_names_out=False,
)
clf = make_pipeline(ct, SelectPercentile(percentile=50), LogisticRegression())
clf.fit(X_train, y_train)

config_context를 사용하여 set_output 설정

config_context를 사용하여 출력 형식을 설정할 때, transform 또는 fit_transform가 호출되는 시점의 설정이 적용됩니다.

scaler = StandardScaler()
scaler.fit(X_train[num_cols])

with config_context(transform_output="pandas"):
    X_test_scaled = scaler.transform(X_test[num_cols])
X_test_scaled.head()

요약

이 실습에서는 Scikit-Learn 의 set_output API 를 사용하여 변환기를 pandas DataFrame 으로 출력하도록 설정하는 방법을 배웠습니다. 추정기를 DataFrame 으로 출력하도록 설정하는 방법, 파이프라인을 DataFrame 으로 출력하도록 설정하는 방법, 그리고 set_config를 사용하여 set_output를 전역적으로 설정하는 방법을 보여주었습니다. 또한 config_context를 사용하여 set_output를 설정하는 방법도 학습했습니다.