-
빅데이터 분석기사 작업형 3유형 공부 방법python 2024. 12. 31. 15:08
안녕하세요!
저번 포스팅에 빅데이터 분석기사 전체적인 시험 공부 방법에 대해 포스팅 해보았는데,
작업형 3유형이 제가 공부할 때 가장 정보도 없고 막막했어서 조금이라도 도움이 되길 바라며 요로콤 글을 올려봅니다 ;)
작업형 3유형에서는 통계 문제가 시험 문제로 나오는데,
그중에서도 '다중회귀분석'과 '로지스틱 회귀분석' 이 2개가 주로 시험 문제로 많이 나온 것 같았어요! (추세가 그런듯,,)
3유형은 크게 2문제가 나오는데,
각 큰 2문제 내에 3개의 소문제가 나와요!
1. 다중회귀분석 시험 질문
1-1.
1-2.
1-3.
요론 느낌~
근데, 3문제가 각각 독립적으로 있을수도 있는데 1-2에서 나온 결과를 바탕으로 1-3을 풀어야 하는 내용도 있었기 때문에 (9회차에서는 그랬습니당)
공부할 때 나올 수 있는 문제는 다 파악하는게 중요할 것 같아요!
지금부터 다중회귀분석, 로지스틱 회귀분석에서 나올 수 있는 시험 문제 관련해서 내용 작성해볼게요!
1. 다중회귀분석
크게 3개 문제가 나올 수 있을 것 같아요!
1. 회귀계수 값, 유의확률 값
2. 결정계수, 조정된 결정계수
3. predict() 함수 통해 새로운 데이터를 이용해 종속 변수 예측값 계산먼저 필요한 라이브러리 및 데이터를 불러오고,
# 라이브러리 임포트 from statsmodels.formula.api import ols # 데이터 불러오기 import statsmodels.api as sm trees = sm.datasets.get_rdataset('trees').data
데이터에 결측값이 있는지, 어떤 구조로 되어있는지 파악을 하는 과정은 꼭 거치는게 좋아요
# 데이터 기본 정보 확인 trees.info() trees.isnull().sum()
데이터를 가지고 종속변수, 독립변수를 파악하고 다중회귀분석을 위한 식을 작성합니다.
식을 만들때는 .fit() 함수를 사용해서!!!
결과 확인은 .summary() 함수를 사용해서!!!
저는 이게 너무 편하고 눈에도 잘 보여서 statsmodels.formula.api 활용해서 진행했습니다.
# 모델 생성 # 모댈은 '종속 ~ 독립', data = dataset . fit() model = ols('Volume ~ Girth + Height', data = trees).fit() # 결과 확인 print(model.summary()) # 이거 바탕이면 식은 # volume = 4.7082 * Girth + 0.3393 * Height -57.9877
.summary() 함수 사용하면 나오는 결과 1. 회귀계수 값, 유의확률 값 확인
회귀계수 확인
'.parmas' 사용
# 회귀계수 model.params
유의확률 확인
'.pvales' 사용
# 유의확률 model.pvalues
이건 기본적으로 알아야 하는 거고,
이걸 알아야 시험 문제에 적용 및 활용할 수 있어요
예를 들어,
'다중회귀분석을 수행하여 Girth의 회귀계수에 대한 p-value 구하고 소숫점 셋째자리까지만 작성하시오'라는 문제가 나온다면,
print(round(model.pvalues['Girth'], 3))
이렇게 활용하시면 됩니다!
2. 결정계수, 조정된 결정계수결정계수 확인
'.rsquared' 사용
# r-square 값 model.rsquared
조정된 결정계수 확인
'.rsquared_adj' 사용
# 조정된 r-square 값 model.rsquared_adj
3. predict() 함수 통해 새로운 데이터를 이용해 종속 변수 예측값 계산
새로운 데이터 추가 시(지름, 키) -> 부피값(종속변수 값) 예측
이전에 있던 데이터를 가지고 다중회귀모델(식)을 만들었는데,
이 식을 바탕으로 새로운 값들을 넣으면 종속변수인 부피값이 어떻게 될지 예측하는겁니다!
# 새로운 데이터 추가 new_data = pd.DataFrame({'Girth': [8.5, 13.0, 19.0], 'Height': [72, 86, 85]}) # 예측값 확인 pred = model.predict(new_data) print(pred) # 0 6.457794 # 1 32.394034 # 2 60.303746
결과를 보면 'Girth'값이 8.5이고, 'Height'값이 72이면
부피값은 6.457794 정도를 예상한다고 하네용
추가적으로,,,
9회차 시험에서는 소문제로 상관관계에 관해서도 물어봤던 것 같아요...!
상관관계는 .corr() 함수 사용해서 풀었던 것 같습니다
2. 로지스틱 회귀분석
일단 문제는 여기꺼 사용해서 풀었어욥!
https://www.kaggle.com/code/agileteam/t3-logit-py
t3-logit-py
Explore and run machine learning code with Kaggle Notebooks | Using data from Big Data Certification KR
www.kaggle.com
로지스틱 회귀분석에서 크게 나올 수 있는 문제는
1. 오즈비 값: np.exp(model.params)
2. 로그 우도: model.llf
3. 유의확률: model.pvales
4. 잔차이탈도: -2 * model.llf이정두...? 인 것 같습니다.
먼저 라이브러리 임포트 해주고
from statsmodels.formula.api import logit # 데이터셋 분할 train = df.iloc[:350] # 0부터 349까지의 행 가져옴. 총 350개의 데이터 test = df.iloc[350:]
1. 오즈비 계산
income 변수를 독립변수로 purchase를 종속변수로 사용하여 로지스틱 회귀 모형을 만들고,
income 변수가 한 단위 증가할 때 구매할 오즈비 값을 계산# 식: 종속변수 ~ 독립변수 model = logit('purchase ~ income', data = train).fit() print(model.summary()) # 오즈비 계산 odds_ratio_income = np.exp(model.params['income'])
이 오즈비 가지고는 아래 문제처럼 활용될 수 있는데요,
income 변수가 5 증가할 때 오즈비 증가 배수 계산
print('income 변수가 5 증가하면 오즈비는', round(np.exp(5 * model.params['income']), 3), '배 증가합니다')
2. 로그 우도 계산
독립변수 income만 사용해 학습한 모델의 로그 우도 계산
log_likelihood_income = model.llf
3. 유의확률 계산
독립변수 income만 사용해 학습한 모델의 유의확률(p-value) 계산
p_value_income = model.pvalues['income']
유의확률 가지고는 아래 문제가 나올 수 있어요.
유의확률을 구하고, 최대 유의확률 값을 출력하시오
(최대 유의확률을 구하라는 것은 이 세 p-value 중 가장 큰 값을 찾으라는 의미)import numpy as np max_pvalue = np.max(model.pvalues)
아니면
유의하지 않은 변수 개수를 세라고 할 수도 있어요.
# 유의하지 않은 변수 (p-value > 0.05) p_values = model.pvalues insignificant_vars = p_values[p_values > 0.05] print(f'유의하지 않은 변수 개수: {len(insignificant_vars)}개')
4. 잔차이탈도 계산
print(round(-2 * model.llf, 2))
요약해보자면,
저는 작업형 3유형 공부할 때
1. 저렇게 시험문제 유형이 뭐가 나오는지 먼저 다 파악하고
2. 각 문제에 필요한 함수가 뭔지 파악
3. 이 함수 활용해서 어떻게 문제가 나올지 추가적으로 생각
이런식으로 하고 작업형 3유형 만점을 받았습니다-!
조금이라도 도움이 되셨으면 좋겠습니다,,,ㅎㅎㅎ
긴 글 읽어주셔서 감사해뇨
'python' 카테고리의 다른 글
파이썬으로 여러 개의 csv 파일 불러와서 읽는 방법 (0) 2025.03.21 빅데이터분석기사 9회 실기 후기, 비전공자 공부 방법 (6) 2024.12.26 seaborn 색상 코드(HEX code) 찾는 법 (0) 2024.10.18 가상환경 설치, 패키지 설치 방법 (2) 2024.10.01 파이썬 시각화할 때 경고 무시, 한글 깨짐 해결 (0) 2024.08.01