728x90
빅데이터분석기사 실기 기출 복원 문제 - 제3유형
들어가며
- 빅데이터분석기사 실기 기출 제3유형 복원 문제를 정리해본다.
- 제3유형에서는 2023년 6회 시험부터 검정(Test) 관련 문제가 출제된다.
- 문제 해결 방법을 쭉 읽어 보는 용도로 정리해보았다.
문제
2023년 6회
문제 1
- 감기약을 복용할 때 부작용에 대한 분류와 비율 데이터
- 위약 효과가 있는지 253건의 데이터를 추출하여 검증
- 감기 부작용에 대한 비율이 위약 효과 부작용 비율과 같은지를 카이제곱 검정하기
데이터
부작용 유형 | 코드 | 비율 |
---|---|---|
두통 | 1 | 0.05 |
졸림 | 2 | 0.1 |
속쓰림 | 3 | 0.05 |
부작용 없음 | 4 | 0.8 |
합계 | - |
문제
- (1) 위약 샘플 데이터가
부작용 없음
인 데이터를 0~1 사이의 확률로 출력 (반올림하여 소수점 셋째 자리로 출력) - (2) 카이제곱 검정으로 검정 통계량 출력 (반올림하여 소수점 셋째 자리로 출력)
- (3) 유의 확률(p-value) 출력 (반올림하여 소수점 셋째 자리로 출력)
import pandas as pd from scipy.stats import chisquare dt = pd.read_csv('dataset.csv', encoding='euc-kr') # 속성 및 결측값 확인 print(dt.info()) <class 'pandas.core.frame.DataFrame'> RangeIndex: 253 entries, 0 to 252 Data columns (total 1 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 코드 253 non-null int64 dtypes: int64(1) memory usage: 2.1 KB None # '코드' 열을 기준으로 그룹화된 데이터 빈도 계산 ## reset_index는 인덱스를 리셋하고 기존의 인덱스를 열로 변환하거나 제거하는 데 사용된다. dt_placebo = dt.groupby('코드').size().reset_index(name='건수') print(dt_placebo) 코드 건수 0 1 15 1 2 24 2 3 15 3 4 199 # '건수'의 총합 구하기 tot_cnt = len(dt) # 관측 빈도의 비율 구하기 dt_placebo['비율'] = dt_placebo['건수'] / tot_cnt print(dt_placebo) 코드 건수 비율 0 1 15 0.059289 1 2 24 0.094862 2 3 15 0.059289 3 4 199 0.786561 # 정답 (1) : '부작용 없음'의 확률 구하기 result1 = round(dt_placebo['비율'][3], 3) # 소수점 셋째 자리까지 출력 print(result1) 0.787 # 정답 (2) : 카이제곱 검정으로 검정 통계량 구하기 dt_rate = pd.DataFrame({'코드': [1, 2, 3, 4], '비율': [0.05, 0.1, 0.05, 0.8]}) result_chisq = chisquare(dt_placebo['건수'], f_exp=dt_rate['비율'] * tot_cnt) print(result_chisq) Power_divergenceResult(statistic=0.9970355731225298, pvalue=0.801969260894451) result2 = round(result_chisq.statistic, 3) # 소수점 셋째 자리까지 출력 print(result2) 0.997 # 정답 (3) : p-value 구하기 result3 = round(result_chisq.**pvalue**, 3) # 소수점 셋째 자리까지 출력 print(result3) 0.802
문제 2
- 날씨 데이터
- 다중 선형 회귀 모델을 사용하여 오존(
O3
), 일사량(Solar
), 풍속(Wind
) 변수에 대한 온도(Temperature
)를 예측하는 모델 생성하기
데이터
변수 | 설명 |
---|---|
O3 | 오존농도 |
Solar | 자외선 |
Wind | 바람 |
Temperature | 온도 |
Month | 월 |
Day | 일 |
문제
- (1) 오존농도 변수에 대한 회귀 계수 추정값 출력하기 (반올림하여 소수점 셋째 자리로 출력)
- (2) 오존농도, 일사량이 고정일 때 풍속이 증가함에 따라 온도가 낮아진다는 것을 검증했다. t-검증값의 유의 확률(p-value) 출력하기 (반올림하여 소수점 셋째 자리로 출력)
- (3) 어떤 날이 오존농도 10, 일사량 90, 풍속 20일 때 온도의 예측값 출력하기 (반올림하여 소수점 셋째 자리로 출력)
import pandas as pd import numpy as np from sklearn.linear_model import LinearRegression from scipy import stats t = pd.read_csv('dataset.csv', encoding='euc-kr') # 속성 및 결측값 확인 print(t.info()) <class 'pandas.core.frame.DataFrame'> RangeIndex: 111 entries, 0 to 110 Data columns (total 4 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 O3 111 non-null int64 1 Solar 111 non-null int64 2 Wind 111 non-null float64 3 Temperature 111 non-null int64 dtypes: float64(1), int64(3) memory usage: 3.6 KB None # 독립 변수, 종속 변수 분리하기 x = t[['O3', 'Solar', 'Wind']] # 오존, 일사량, 풍속 y = t['Temperature'] # 온도 # 모델링 lm = LinearRegression() lm.fit(x, y) # 회귀 계수 구하기 coefs = pd.DataFrame({ 'Feature': ['O3', 'Solar', 'Wind'], 'Coefficient': lm.coef_ }) print(coefs) Feature Coefficient 0 O3 0.171966 1 Solar 0.007276 2 Wind -0.322945 # 정답 (1) : 오존농도 변수(O3)에 대한 회귀계수 추정값(Coefficient) 구하기 crit1 = float(coefs[coefs['Feature'] == 'O3']['Coefficient'].iloc[0]) result1 = round(crit1, 3) print(result1) 0.172 # 정답 (2) : 오존농도, 일사량이 고정일 때 풍속이 증가함에 따라 온도가 낮아진다는 것을 검증했다. t-검증값의 유의 확률(p-value) 구하기 [sts, p_value] = stats.ttest_ind(x['Wind'], y) # 풍속의 변화 result2 = round(p_value, 3) print(result2) 0.0 # 정답 (3) : 어떤 날이 오존농도 10, 일사량 90, 풍속 20일 때 온도의 예측값 구하기 df_oneday = pd.DataFrame({ 'O3': [10], # 오존농도 'Solar': [90], # 일사량 'Wind': [20], # 풍속 }) result3 = lm.predict(df_oneday) print(np.round(result3[0], 3)) 68.334
728x90
'Certificate > BDAE' 카테고리의 다른 글
[빅데이터분석기사 실기] 기출 복원 문제 - 제2유형 (0) | 2024.06.05 |
---|---|
[빅데이터분석기사 실기] 기출 복원 문제 - 제1유형 (0) | 2024.06.05 |
빅데이터분석기사 시험 개요 (0) | 2022.07.11 |