
카테고리 중 해당하는 하나(One)만 1(Hot)로 만들고 나머지는 0으로 만드는 방식이다.
컬럼 하나를 넣으면 자동으로 여러 개의 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)을 모델에 녹여내는 단계에 진입