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] 머신러닝 이론 및 프로세스 요약
2023.06.12 - [자격증공부/빅데이터분석기사] - [빅데이터분석기사][작업형1] 판다스 문법 활용 요약
320x100
반응형
'자격증공부 > 빅데이터분석기사' 카테고리의 다른 글
[빅데이터분석기사] 작업형2 머신러닝 이론 및 프로세스 요약 (0) | 2023.06.12 |
---|---|
[빅데이터분석기사] 작업형2 문제유형 (분류) (0) | 2023.06.12 |
[빅데이터분석기사] 작업형2 기출문제 2회 (분류) (0) | 2023.06.10 |
[빅데이터분석기사] 작업형2 예시문제 (분류) (0) | 2023.06.09 |
[빅데이터분석기사] 실기시험 응시환경 및 Tip (0) | 2023.06.08 |