본문 바로가기

[Python]

[Python] 빅데이터분석기사 실기 연습(작업형2)

5-1 신용카드 서비스를 떠나는 고객을 찾아라

1. 데이터 불러오기

# csv 파일 pandas로 불러오기

import pandas as pd

train = pd.read_csv("train.csv")
test =  pd.read_csv("test.csv")

 

2. 데이터 탐색 - EDA

# 사용 함수

head()

shape()

isnull().sum()

value_counts()

 

2. 데이터 전처리 & 피처엔지니어링

# 범주형 컬럼 복수 선택 / 범주형이 아닌 컬럼 복수 선택

1. select_dtypes(include='object').columns

2. select_dtypes(exclude='object').columns

 

# 컬럼 삭제

1. drop(cols, axis=1)

2. drop(columns = '컬럼명')

 

# 컬럼 잘라내고 붙여넣기

test_id = test.pop('CLIENTNUM')

 

# 라벨 인코딩

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()

train >> le.fit_transform()

test >> le.transform()

 

3. 검증 데이터 분리

# 사이킷런을 이용하여 검증 데이터 분리

from sklearn.model.selection import train_test_split

X_tr, X_val, y_tr, y_val = train_test_split(

X_train(독립 변수), y_train(타깃,종속 변수),

test_size = 0.2,

random_state = 2022

)

 

4. 모델 & 평가

# 랜덤포레스트 분류 모형 불러오기

from sklearn.ensemble import RandomForestClassifier

 

# 사용 함수

RandomForestClassifier()

model.fit()

model.predict()

model.predict_proba()

 

# 분류 평가 지표

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_auc_score

 

정밀도: precision_score()

 

재현율(민감도): recall_score()

 

* F1: f1_score() 

 

* roc_acu: roc_auc_score()        >>     cf) predict_proba 사용!!

 

5. 예측 및 csv 제출 평가

# 데이터프레임 만들기

submit = pd.DataFrame()

 

# df >> csv 변환

submit.to_csv('00000'.csv, index=False)

 

5-1 신용카드 서비스를 떠나는 고객을 찾아라

# df 모든 컬럼의 unique() 개수 

nunique()

 

# 랜덤포레스트 회귀

from sklearn.ensemble import RandomForestRegressor

model = RandomForestRegressor()

 

# 릿지

from sklearn.linear import Ridge

model = Ridge()

 

# 라쏘

from sklearn.linear import Lasso

model = Lasso()

 

# XGB

from xgboost import XGBRegressor

model = XGBRgressor()

 

# 회귀 평가 지표

# R2, MAE,MSE import

import numpy as np

from sklearn.metrics import r2_score, mean_absolute_error, mean_squard_error

 

* R2: r2_score() - 분산 기반으로 예측 성능 평가, 1에 가까울수록 예측 정확도가 높음

 

MAE: mean_absolute_error() - 실제 값과 예측 값의 차이를 절대값으로 변환해 평균

 

MSE: mean_squared_error() - 실제 값과 예측 값의 차이를 제곱해 평균한 것

 

* RMSE: rmse() - MSE에 루트를 씌운 것

def rmse(y_test, y_pred): #RMSE
    return np.sqrt(mean_squared_error(y_test, y_pred))

RMSLE : rmsle() - RMSE에 로그를 적용해준 지표

def rmsle(y_test, y_pred): #RMSLE
    return np.sqrt(np.mean(np.power(np.log1p(y_test) - np.log1p(y_pred), 2)))

MAPE: mape() -  MAE와 비슷하지만 실제 정답 값을 나누어 도출한 확률 값

def mape(y_test, y_pred): #MAPE
    return np.mean(np.abs((y_test - y_pred) / y_test)) * 100