본문 바로가기

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

[빅데이터분석기사] 작업형2 기출문제 3회 (분류)

320x100

빅데이터분석기사

* 퇴근후딴짓 님의 강의를 참고하였습니다.*

[ 문제 ]

보험가입 확률을 묻는 문제

ㅇ 제공된 데이터(2개) : train.csv, test,csv

ㅇ 예측할 컬럼 : TavelInsurance

빅데이터분석기사

반응형

[ 풀이 ]

1. 데이터 불러오기

import pandas as pd
train = pd.read_csv("train.csv")
test = pd.read_csv("test.csv")

 

2. EDA

ㅇ 크기 : shape

ㅇ 샘플 : head()

ㅇ 타입 : info()

ㅇ 결측치 : isnull().sum()

ㅇ 기초통계 : describe(), describe(include='object')

ㅇ 타겟 레이블 : value_counts()

# 크기 확인
train.shape, test.shape
# 샘플 확인
train.head()
# 타입 확인
train.info()
# 결측치 확인 train
train.isnull().sum()
# 결측치 확인 test
test.isnull().sum()
# 기초 통계 획인
train.describe()
# 기초 통계 획인 object
train.describe(include ='object')
# 타겟(레이블)
train['TravelInsurance'].value_counts()

 

빅데이터분석기사빅데이터분석기사

 

3. 데이터전처리 및 피처엔지니어링

ㅇ 수치형/범주형 데이터 분리 : 이상치/결측치 처리, 수치형변수 스케일링(로버스틱 등등), 범주형변수 인코딩(원핫/라벨)

ㅇ 분리한 데이터 다시 합치기

# 수치형 데이터와 범주형 데이터 분리 
n_train = train.select_dtypes(exclude='object').copy()
c_train = train.select_dtypes(include='object').copy()
n_test = test.select_dtypes(exclude='object').copy()
c_test = test.select_dtypes(include='object').copy()

# 수치형 변수 스케일링 (로버스틱 ; 이상치가 있을 때 정교화 해주려고)
from sklearn.preprocessing import RobustScaler
scaler = RobustScaler()
cols = ['Age', 'AnnualIncome', 'FamilyMembers', 'ChronicDiseases']

display(n_train.head())
n_train[cols] = scaler.fit_transform(n_train[cols])
n_test[cols] = scaler.transform(n_test[cols])
n_train.head()

# 범주형 변수 인코딩(원핫 인코딩)
display(c_train.head())
c_train = pd.get_dummies(c_train)
c_test = pd.get_dummies(c_test)
c_train.head()

# 분리한 데이터 다시 합침
train = pd.concat([n_train, c_train], axis=1)
test = pd.concat([n_test, c_test], axis=1)
print(train.shape, test.shape)
train.head()

빅데이터분석기사빅데이터분석기사

 

4. 모델 학습 및 예측

ㅇ 검증데이터 분리

ㅇ 모델학습 및 평가(분리한 검증데이터)

# 검증데이터 분리
from sklearn.model_selection import train_test_split
X_tr, X_val, y_tr, y_val = train_test_split(train.drop('TravelInsurance', axis=1),
                                            train['TravelInsurance'],
                                            test_size=0.1,
                                            random_state=1204)
X_tr.shape, X_val.shape, y_tr.shape, y_val.shape

# 랜덤포레스트
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators=400, max_depth=9, random_state=1204 )
rf.fit(X_tr, y_tr)
pred = rf.predict_proba(X_val)[:,1]

# 평가
from sklearn.metrics import roc_auc_score
roc_auc_score(y_val, pred)

빅데이터분석기사

 

320x100

5. 예측

ㅇ test데이터로 예측 및 csv파일 생성

# test 예측
pred = rf.predict_proba(test)[:,1]

# csv 파일1 생성 (예시와 다른 형태)
pd.DataFrame({
              'index':test.index,
              'y_prd': pred
}
).to_csv('0000.csv', index=False)

 

 

2023.06.12 - [자격증공부/빅데이터분석기사] - [빅데이터분석기사][작업형2] 머신러닝 이론 및 프로세스 요약

 

[빅데이터분석기사][작업형2] 머신러닝 이론 및 프로세스 요약

* 퇴근후딴짓 님의 강의를 참고하였습니다. * 1. 머신러닝 ㅇ기존에는 데이터/규칙을 Rule Base로 결과를 도출하였지만, 머신러닝은 데이터와 결과(해답)을 기반으로 학습을 통해 규칙을 도출하고

inform.workhyo.com

 

2023.06.12 - [자격증공부/빅데이터분석기사] - [빅데이터분석기사][작업형1] 판다스 문법 활용 요약

 

[빅데이터분석기사][작업형1] 판다스 문법 활용 요약

1. 라이브러리 및 데이터 읽어오기 ㅇ 컬럼명 확인할 수 있도록 세팅하기 import pandas as pd df = pd.read_csv('ㅇㅇㅇㅇ.csv') pd.set_option('display.max_columns', None) #컬럼명 전부 확인할 수 있도록 셋팅하기 2.

inform.workhyo.com

 

320x100
반응형