반응형
여행 보험 패키지 데이터
- 예측할 값(y) : TravelInsurance (여행보험 패키지를 구매했는지 여부, 0:구매안함, 1:구매)
- 평가 : roc-auc 평가지표
- data : t2-1-train.csv, t2-a-test.csv
- 제출형식
# 라이브러리 불러오기
import pandas as pd
# 데이터 불러오기
train = pd.read_csv("../input/big-data-analytics-certification/t2-1-train.csv")
test = pd.read_csv("../input/big-data-analytics-certification/t2-1-test.csv")
# EDA
# 데이터 사이즈
train.shape, test.shape
# 샘플 확인
train.head()
# type 확인
train.info()
# 카테고리 수 확인
train.describe(include="object")
# 카테고리 수 확인
test.describe(include="object")
# Employment Type 컬럼 카테고리
train['Employment Type'].value_counts()
# Employment Type 컬럼 카테고리
train['Employment Type'].value_counts()
# 수치형 통계 값
train.describe(exclude = "object")
# 수치형 통계 값
train.describe(exclude = "object")
# 결측치 확인
train.isnull().sum()
# 결측치 확인
test.isnull().sum()
# target
train['TravelInsurance'].value_counts()
# 결측치 처리
train['AnnualIncome'] = train['AnnualIncome'].fillna(train['AnnualIncome'].mean())
test['AnnualIncome'] = test['AnnualIncome'].fillna(train['AnnualIncome'].mean())
# target 값 변수에 옮기기
target = train.pop('TravelInsurance')
# 데이터 합치기
df = pd.concat([train, test])
df.shape
# 레이블 인코딩
from sklearn.preprocessing import LabelEncoder
cols = df.select_dtypes(include="object").columns
le = LabelEncoder()
for col in cols:
df[col] = le.fit_transform(df[col])
# train test 다시 분리
train = df[:train.shape[0]].copy()
test = df[train.shape[0]:].copy()
# 스케일
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
train['AnnualIncome'] = scaler.fit_transform(train[['AnnualIncome']])
test['AnnualIncome'] = scaler.transform(test[['AnnualIncome']])
# 검증 데이터 분리
from sklearn.model_selection import train_test_split
X_train, X_val, y_train, y_val = train_test_split(train, target, test_size=0.2, random_state=2022)
X_train.shape, X_val.shape, y_train.shape, y_val.shape
# 모델 학습 및 평가
# 의사결정나무
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier(random_state=2022)
model.fit(X_train, y_train)
pred = model.predict_proba(X_val)
# 평가
from sklearn.metrics import roc_auc_score
roc_auc_score(y_val, pred[:,1])
# 랜덤포레스트
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(random_state=2022)
model.fit(X_train, y_train)
pred = model.predict_proba(X_val)
roc_auc_score(y_val, pred[:, 1])
# xgboost
import xgboost as xgb
model = xgb.XGBRFClasiifier(random_state=2022)
model.fit(X_train, y_train)
pred = model.predict_proba(X_val)
roc_auc_score(y_val, pred[:, 1])
# 예측
# test 데이터 예측
model = RandomForestClassifier(random_state=2022)
model.fit(X_train, y_train)
pred = model.predict_proba(test)
# 예측한 데이터 -> 데이터프레임으로
submit = pd.DataFrame()
submit['id'] = test['id']
submit[TravelInsurance'] = pred[:, 1]
# 예측한 데이터 확인
submit.head()
# csv 저장
submit.to_csv("2022.csv", index=False)
# csv 확인
pd.read_csv("2022.csv")
반응형
'빅데이터분석기사 > 코드' 카테고리의 다른 글
[빅데이터분석기사] 실기 4회 2유형 풀이(Python) (0) | 2023.06.17 |
---|---|
[빅데이터분석기사] 실기 4회 1유형 풀이(Python) (0) | 2023.06.16 |
[빅데이터분석기사] 실기 3회 1유형 풀이(Python) (0) | 2023.06.16 |
[빅데이터분석기사] 실기 2회 2유형 풀이(Python) (0) | 2023.06.15 |
[빅데이터분석기사] 실기 2회 1유형 풀이(Python) (0) | 2023.06.14 |