머신러닝

Devin·2026년 1월 22일
post-thumbnail

원-핫 인코딩 (One-Hot Encoding)이란?

카테고리 중 해당하는 하나(One)만 1(Hot)로 만들고 나머지는 0으로 만드는 방식이다.

Pandas의 get_dummies()

컬럼 하나를 넣으면 자동으로 여러 개의 0, 1 컬럼으로 쪼개준다.


import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score

class CategoricalPredictor:
    def __init__(self, file_path: str):
        self.df = pd.read_csv(file_path)
        self.features = ['time_input', 'total_class_count', 'job']
        self.target = 'completed'

        self.df = self.df[self.features + [self.target]].dropna()

    def run_encoding_analysis(self):
        encoded_df = pd.get_dummies(self.df, columns=['job'])

        X = encoded_df.drop(columns=[self.target])
        y = encoded_df[self.target]

        X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

        model = LinearRegression()
        model.fit(X_train, y_train)

        y_pred = model.predict(X_test)
        r2 = r2_score(y_test, y_pred)

        print(f"--- 인코딩 적용 후 분석 결과 ---")
        print(f"새로 생성한 컬럼들: {list(X.columns)}")
        print(f"결정계수(R2 Score): {r2: .4f}")

# --- 실행부 ---
predictor = CategoricalPredictor('train.csv')
predictor.run_encoding_analysis()


데이터의 문맥(Context)을 모델에 녹여내는 단계에 진입

profile
AI/ML Engineer 🧑‍💻

0개의 댓글