250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 태블로
- 선형회귀
- DATE_SUB
- 내배캠_학습기록
- Join
- Max
- Leetcode
- 아티클스터디
- Set
- 시각화
- 내일배움일지
- 리스트
- SQL
- ★
- 내일배움캠프
- 다중공선성
- 데이터시각화
- f-string
- 반복문
- map
- python
- AB테스트
- Til
- 프로그래머스
- 한줄for문
- 이중for문
- 가설검정
- 통계학
- 데이터전처리
- SQLD
Archives
- Today
- Total
노력에는 지름길이 없으니까요
4.3 범주형 변수 본문
728x90
회귀에서 범주형 변수의 경우 특별히 변환을 해주어야 함!
☑️ 범주형 변수
수치형 데이터가 아닌 주로 문자형 데이터로 이루어져 있지 않는 변수가 범주형 변수
☑️ 범주형 변수 종류
예를 들어 성별(남, 여), 지역(도시, 시골) 등이 있으며, 더미 변수로 변환하여 회귀 분석에 사용.
순서가 있는 범주형 변수
- 옷의 사이즈 (L, M, …), 수능 등급 (1등급, 2등급, ….)과 같이 범주형 변수라도 순서가 있는 변수에 해당한다
- 이런 경우 각 문자를 임의의 숫자로 변환해도 문제가 없다 (순서가 잘 반영될 수 있게 숫자로 변환)
- ex) XL → 3, L → 2, M → 1, S → 0
순서가 없는 범주형 변수
- 성별 (남,여), 지역 (부산, 대구, 대전, …) 과 같이 순서가 없는 변수에 해당한다
- 2개 밖에 없는 경우 임의의 숫자로 바로 변환해도 문제가 없지만
- 3개 이상인데 순서가 없는 경우에는 무조건 원-핫 인코딩(하나만 1이고 나머지는 0인 벡터)변환을 해주어야 한다 → pandas의 get_dummies를 활용하여 쉽게 구현 가능
- ex) 부산 = [1,0,0,0], 대전 = [0,1,0,0], 대구 = [0,0,1,0], 광주 = [0,0,0,1]
☑️ 범주형 변수를 찾고 더미 변수로 변환한 후 회귀 분석 수행
- 성별, 근무 경력과 연봉 간의 관계.
- 성별과 근무 경력이라는 요인변수 중 성별이 범주형 요인변수에 해당
- 해당 변수를 더미 변수로 변환
- 회귀 수행
# 예시 데이터 생성
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)
#drop_first : 범주형 변수의 값중 하나를 제외하고 나머지에 대해서 더미 변수 변환처리
ex) 남자만 결정하면 여자는 자연스럽게 결정되기 때문에
컬럼수도 적어지고 다중공선성 문제도 줄어들 수 있다.
Gender-> Gender_Male로 변환
실제로는 0, 1 값이 나와야 하나, bool값도 결구 0, 1로 해석되기 때문에 이하 결과에는 문제 없음
# 독립 변수(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
728x90
반응형
'통계학' 카테고리의 다른 글
5.1 피어슨 상관계수 (0) | 2024.08.05 |
---|---|
4.4 다항회귀, 스플라인 회귀 (0) | 2024.08.05 |
4.2 다중선형회귀 (0) | 2024.08.05 |
다중공선성이란? (0) | 2024.08.05 |
4.1 단순선형회귀 (0) | 2024.08.05 |