[파이썬] catboost 라벨 인코딩과 원-핫 인코딩

머신러닝 알고리즘을 사용할 때, 데이터의 특성을 숫자로 표현해야 하는 경우가 많습니다. 라벨 인코딩과 원-핫 인코딩은 데이터의 범주형 변수를 숫자로 변환하는 데에 주로 사용됩니다. 이번 포스트에서는 Catboost 라이브러리를 사용하여 라벨 인코딩과 원-핫 인코딩을 어떻게 수행할 수 있는지 알아보겠습니다.

라벨 인코딩(Label Encoding)

라벨 인코딩은 범주형 변수를 일련의 숫자로 매핑하는 과정입니다. 이를 통해 머신러닝 알고리즘이 범주형 변수를 처리할 수 있게 됩니다. Catboost는 범주형 변수를 자동으로 인식하여 라벨 인코딩을 수행해주는 기능을 제공합니다.

from catboost import CatBoostClassifier

# 데이터 로드
train_data = pd.read_csv('train.csv')
test_data = pd.read_csv('test.csv')

# Catboost 모델 초기화
model = CatBoostClassifier()

# 범주형 변수 지정
categorical_features_indices = [0, 1, 2, 3] # 예시로 4개의 범주형 변수를 가정

# 모델 훈련
model.fit(train_data, train_labels, cat_features=categorical_features_indices)

Catboost의 CatBoostClassifier 클래스를 사용하여 분류 모델을 초기화하고, fit 메서드를 호출하여 모델을 훈련합니다. cat_features 매개변수를 사용하여 범주형 변수들의 인덱스를 지정해줍니다. 모델은 자동으로 범주형 변수를 인식하고 라벨 인코딩을 수행합니다.

원-핫 인코딩(One-Hot Encoding)

원-핫 인코딩은 범주형 변수를 이진 벡터로 변환하는 과정입니다. 각 범주에 대해 하나의 이진 변수를 생성하고, 해당 범주에 속하면 1로 표시하고, 속하지 않으면 0으로 표시합니다. Catboost는 원-핫 인코딩을 수동으로 지정해야 합니다.

from catboost import CatBoostClassifier

# 데이터 로드
train_data = pd.read_csv('train.csv')
test_data = pd.read_csv('test.csv')

# 원-핫 인코딩 수행
train_data_encoded = pd.get_dummies(train_data)
test_data_encoded = pd.get_dummies(test_data)

# Catboost 모델 초기화
model = CatBoostClassifier()

# 모델 훈련
model.fit(train_data_encoded, train_labels)

Catboost를 사용하기 전에, pd.get_dummies 함수를 사용하여 데이터를 원-핫 인코딩합니다. 이 함수는 범주형 변수들을 자동으로 인식하고, 인코딩된 데이터를 반환합니다. 이후 Catboost 모델을 초기화하고, 원-핫 인코딩된 데이터를 사용하여 모델을 훈련합니다.

결론

Catboost는 라벨 인코딩과 원-핫 인코딩을 모두 지원하여, 범주형 변수를 머신러닝 알고리즘에 적용하기 용이하게 해줍니다. 라벨 인코딩은 자동으로 수행되고, 원-핫 인코딩은 pandas의 get_dummies 함수를 사용하여 수동으로 수행합니다. 이는 데이터의 특성을 최대한 유지하면서 범주형 변수를 수치형 변수로 변환하는 데에 도움을 줍니다. Catboost를 사용하면 간단하게 라벨 인코딩과 원-핫 인코딩을 수행할 수 있으므로, 데이터 전처리에 소요되는 시간과 노력을 줄일 수 있습니다.