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
'[Python]' 카테고리의 다른 글
[Python] 빅데이터분석기사 실기 연습(작업형3) (0) | 2023.10.30 |
---|---|
[Python] 빅데이터분석기사 기초 통계 (1) | 2023.10.26 |
[Python] 빅데이터분석기사 실기 연습(작업형1) (0) | 2023.10.18 |
[Python] 통계 기본 정리 (0) | 2023.04.03 |
[Python] pandas 기본 (0) | 2023.03.09 |