[통계] 통계학 기초 4주차 (3) 범주형 변수

·2025년 1월 9일

통계

목록 보기
20/34

범주형 변수

  • 수치형 데이터가 아닌 주로 문자형 데이터로 이루어져 있는 변수

순서가 있는 범주형 변수

  • 옷의 사이즈 (S, M, L, XL, ...)
  • 성적 등급 (1등급, 2등급 ...)
  • 각 문자를 순서가 반영되는 숫자로 변환해도 문제가 없다
    ex) S = 0, M = 1, L = 2, XL = 3, ...

순서가 없는 범주형 변수

  • 성별 (여, 남)
  • 지역 (대전, 대구, 광주, 부산, ...)
  • 두 개만 있는 경우에는 임의의 숫자로 변환해도 무방
  • 3개 이상인 경우에는 one-hot encoding
    ex) 부산 = [1,0,0,0], 대전 = [0,1,0,0], 대구 = [0,0,1,0], 광주 = [0,0,0,1]

실습

  • pd.get_dumies(data, drop_first = T/F)
  • drop_first = T: 하나의 범주는 표시하지 않음
    ex) M/F 일 때, Male 컬럼만 남김. False가 곧 Female을 의미하기 때문
    ex) 부산 = [1,0,0], 대전 = [0,1,0], 대구 = [0,0,1], 광주 = [0, 0, 0]
# 예시 데이터 생성
data = {'Gender': ['Male', 'Female', 'Female', 'Male', 'Male'],
        'Experience': [5, 7, 10, 3, 8],
        'Salary': [50, 60, 65, 40, 55]}
df = pd.DataFrame(data)

# 범주형 변수 더미 변수로 변환
df = pd.get_dummies(df, drop_first=True)

# 독립 변수(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_)

# 모델 평가
mse = mean_squared_error(y, y_pred)
r2 = r2_score(y, y_pred)
print("평균 제곱 오차(MSE):", mse)
print("결정 계수(R2):", r2)

결과:

회귀 계수: [ 2.57281553 -6.01941748]
절편: 40.63106796116506
평균 제곱 오차(MSE): 3.1067961165048588
결정 계수(R2): 0.9580162686958803

one-hot encoding된 df:

profile
To Dare is To Do

0개의 댓글