IT 자격증/빅데이터분석기사

[빅분기] 실기 유형별 개념 완벽 정리(중요 포인트!!)

SOIT 2023. 11. 30. 19:16

 

인증

2023.12.15 - [자격증/빅데이터분석기사] - [빅분기] 실기 7회 합격 & 합격비법


 

유형 1

1. 이상치 구하는 방식

1) IQR 이용

IQR을 사용한 이상치 공식

(x[data] < ( Q1 - 1.5 x IQR )) | (x[data] < ( Q3 + 1.5 x IQR )) 이다

q1 = df[''].quantil(0.25)
q3 = df[''].quantil(0.75)

IQR = q3 - q1

#이상치 구하기
df[(df[''] < (q1 - IQR * 1.5)) | (df[''] > (q3 + IQR * 1.5))]

 

 

 

2) 문제에서 주어진 이상치

ex. 이상값은 평균에서 1.5 표준편차 이상인 값으로 한다.

lo = x[data].mean() - x[data].std() *1.5

up = x[data].mean() + x[data].std() *1.5

 

이상치 공식
(x[data] < lo) | (x[data] < up)  이다

 

그 반대(이상치 제외)는

(x[data] >= lo) & (x[data] >= up)  이다

lo = new_df.mean() - new_df.std() * 1.5
up = new_df.mean() + new_df.std() * 1.5

#이상치 구하기
df[(df[''] < lo) | (df[''] > up)]

#이상치 제외
df[(df[''] >= lo) & (df[''] <= up)]

 

 

2. 문자열 수치형으로 변환

일반적으로 수치형 float를 int로 변환할 때는

df[''].astype(int)

df[''].astype(float)

가능하지만

 

문자열 -> 수치형은 astype() 이 불가능하다. 이때는 to_numeric() 을 사용한다.

(※ 빅분기에서 수치형-문자형은 나올 가능성이 없어, 문자-> 수치는 알아두는 것이 좋다.)

pd.to_numeric( df[''] , errors='coerce' )

# errors='coerce' 는 결측치 등 있을 경우 변환시 방지할 때 쓰는데, 함께 외우는 것이 좋다.

 

 

 


유형 2

 

프로세스)

1. info()로 정보 확인

2. 결측치 확인

#결측치 여부에 따른 채우기

#이상치 확인 (ex.나이일 경우, -값 지우기)

3. 데이터 분리

4. 범주형 인코딩

5. 검증 데이터 분리

6. 모델학습

7. 모델평가

8. Test 모델예측 생성

9. 예측 데이터셋 생성

10. 제출 및 확인

 


1. 이진분류(종속변수: 범주형)

프로세스 과정은 동일한데, f1 등의 모델 평가하는 부분에서 차이가 있다.

 

# f1 score

average='binary', pos_label='Yes'

#7. 모델 평가
from sklearn.metrics import f1_score, roc_auc_score
f1_score(y_val, pred, average='binary', pos_label='Yes')

 

 

# ACU

ACU의 모델 평가하는 부분에서는 동일하다.

#6. 모델 학습
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(random_state=44)
model.fit(x_tr, y_tr)
pred = model.predict_proba(x_val)[:,1]

#7. 모델 평가
from sklearn.metrics import f1_score, roc_auc_score
roc_auc_score(y_val, pred)

 

 

2. 다중분류(종속변수: 범주형)

프로세스 과정은 동일한데, f1, ACU 등의 모델 평가하는 부분에서 차이가 있다.

 

# f1 score

average='macro'

#7. 모델 평가
from sklearn.metrics import f1_score, roc_auc_score
f1_score(y_val, pred, average='binary', pos_label='Yes')

 

 

# ACU

average='macro', multi_class='ovo' 

 

ACU의 경우 저장하는 방식에도 차이가 있다.

 

모델 평가시,

pred = model.predict_proba(x_val)

 

데이터 저장시,

(이때, 컬럼명 주어진대로 저장하는 거 잊지말고, 잘 기억하자)

1: pred[:,0]

...

4: pred[:,3]

#6. 모델 학습
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(random_state=44)
model.fit(x_tr, y_tr)
pred = model.predict_proba(x_val)

#7. 모델 평가
from sklearn.metrics import f1_score, roc_auc_score
roc_auc_score(y_val, pred, average='macro', multi_class='ovo')

#8. 평가(test) 데이터 예측
pred = model.predict_proba(test)

#9. 데이터 생성(4개의 범주형 예측하는 상황)
new_df = pd.DataFrame({'ID':test_ID,
                       1:pred[:,0],
                       2:pred[:,1],
                       3:pred[:,2],
                       4:pred[:,3]})

 

 

3. 회귀(종속변수: 수치형)

프로세스 과정은 동일한데, f2, MSE,RMSE 등의 모델 평가하는 부분에서 차이가 있다.

 

# f2_score : 1에 가까울 수록 좋음( r-square값 )

#7. 모델 평가
from sklearn.metrics import f2_score 
f2_score(y_val, pred)

 

 

# MSE,RMSE : 작을수록 좋음

#7. 모델 평가
from sklearn.metrics import mean_square_error
#MSE
print(mean_square_error(y_val, pred))
#RMSE
print(mean_square_error(y_val, pred) ** 0.5)

 

 


유형 3

 

크게 4가지로 T-test 검정, 카이제곱검정, 회귀분석, 분산분석 이 있다.


1. T-test 검정

 

1.1 단일표본검정

H0:  A가 100이다.  

H1:  A가 100이 아니다.

(※ H1에 따라, alternative가 존재할 때, 'less' 또는 'greater')

: 모집단 1개이며, 전/ 후가 아님.

 

1) 정규성검정(shapiro(data))   

 

yes   =>  단일표본검정(ttest_1samp(data, 기대값))

no     =>  비모수검정(wilcoxon(data - 기대값))

 

1.2 대응표본검정

μd = 전 - 후

Ho : μd ≥ 0

H1 : μd < 0

(※ H1 의 μd 에 따라, alternative가 존재할 때, 'less' 또는 'greater')

: 모집단 1개이며, 전/ 후 존재.

 

1) 정규성검정(shapiro(diff))   

diff = 전 - 후

(※ μd 순서대로 작성)

 

yes   =>  대응표본검정(ttest_rel(data['전'], data['후'], alternative = 'less'))

no     =>  비모수검정(wilcoxon(data['전'], data['후'], alternative = 'less' ))

 

1.3 독립표본검정

Ho : A그룹 B그룹 ~이다.

H1 : A그룹 B그룹 ~아니다.

(※ H1에 따라, alternative가 존재할 때, 'less' 또는 'greater')

: 모집단 2개인 경우.

 

1) 정규성검정(shapiro(data1)/  shapiro(data2))   

2번 다 수행, 모두 정규성을 만족해야 함

 

yes   =>  등분산검정

no     =>  비모수검정(manh(data1, data2))

 

2) 등분산검정(levene(data1, data2))   

모두 등분산을 만족해야 함

 

yes   =>  독립표본검정(ttest_ind(data1, data2))

no     => 독립표본검정(ttest_ind(data1,data2, equal_var = False))

 


2. 카이제곱 검정

 

 

728x90