# 범주형 변수 더미 변수로 변환
df = pd.get_dummies(df, drop_first=True)
df
pd.get_dummies(): 범주형 변수를 더미 변수(dummy variable)로 변환합니다. drop_first=True 옵션을 사용하여 첫 번째 범주(Female)를 기준으로 나머지 범주(Male)를 더미 변수로 변환합니다.
이 과정에서 Gender_Male이라는 새로운 열이 생성되며, 값이 1이면 남성(Male), 0이면 여성(Female)을 의미합니다.
# 독립 변수(X)와 종속 변수(Y) 설정
X = df[['Experience', 'Gender_Male']]
y = df['Salary']
# 단순선형회귀 모델 생성 및 훈련
model = LinearRegression()
model.fit(X, y)
# 예측
y_pred = model.predict(X)
# 회귀 계수 및 절편 출력
print("회귀 계수:", model.coef_)
print("절편:", model.intercept_)
회귀 계수: [ 2.57281553 -6.01941748]
절편: 40.63106796116504
이 결과는 다음과 같은 회귀식을 의미합니다:
Salary=(2.573⋅Experience)+(−6.019⋅Gender Male)+Intercept
즉:
경력(Experience)이 한 단위 증가할 때 급여(Salary)는 약 2.573 단위 증가합니다.
남성(Gender_Male=1)은 여성에 비해 급여가 약 6.019 단위 낮습니다.
전체 식은 다음과 같습니다:
Salary=(2.573⋅Experience)−(6.019⋅Gender Male)+(40.631)
from sklearn.metrics import mean_squared_error, r2_score
# 모델 평가
mse = mean_squared_error(y, y_pred)
r2 = r2_score(y, y_pred)
print("평균 제곱 오차(MSE):", mse)
print("결정 계수(R2):", r2)
평균 제곱 오차(MSE): 3.106796116504853
결정 계수(R2): 0.9580162686958804
MSE가 낮고 R²가 약 0.96으로 매우 높습니다. 이는 모델이 데이터를 잘 설명하고 있음을 의미합니다.