입사 후 이제 다시 데이터 분석 공부를 하고 있다
그동안 많이 까먹어서 기초부터 다시 시작해야했는데,
마침 데이콘에서 무료로 학습을 해주고 있어 데이콘을 이용하게 되었다
(혹시나 이 포스트가 문제가 된다면 바로 삭제할 예정이다!)
고객 대출등급 분류 기본 학습 💰
dacon.io
프로젝트 난이도는 낮은 편에 속한다
이 순서대로 데이터 분석을 할 것이다
Fixed Random Seed
동일한 결과값을 위해 seed 값을 고정시킨다
import numpy as np
import random
import os
def seed_everything(seed):
random.seed(seed)
os.environ['PYTHONHASHSEED'] = str(seed)
np.random.seed(seed)
seed_everything(42)
데이터 불러오기 및 확인
1. train 데이터: AI모델을 학습하기 위해 사용하는 데이터
2. test 데이터: AI모델을 통해 정답을 예측하기 위해 사용하는 데이터
import pandas as pd
train_df = pd.read_csv('train.csv')
test_df = pd.read_csv('test.csv')
display(train_df.head(3))
display(train_df.head(3))
EDA
EDA (Exploratory Data Analysis)
-탐색적 데이터 분석
-수집한 데이터가 들어왔을 때, 다양한 각도에서 관찰하고 이해하는 과정
-본격적 데이터 분석 전에 그래프나 통계적인 방법을 통해 자료를 확인하는 과정
-이상값 찾아내기 / 의미있는 상관관계 확인
#시각화 패키지 불러오기
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
#한글 폰트 설정하기
fe = fm.FontEntry(fname = 'MaruBuri-Regular.otf', name = 'MaruBuri')
fm.fontManager.ttflist.insert(0, fe)
plt.rc('font', family = 'MaruBuri')
fig, axes = plt.subplots(2, 2, figsize = (25, 10))
sns.countplot(x = train_df['대출기간'], ax = axes[0][0]).set_title('대출기간')
sns.countplot(x = train_df['근로기간'], ax = axes[0][1]).set_title('근로기간')
sns.countplot(x = train_df['주택소유상태'], ax = axes[1][0]).set_title('주택소유상태')
sns.countplot(x = train_df['대출목적'], ax = axes[1][1]).set_title('대출목적')
plt.show()
데이터 전처리
학습 및 추론 데이터 설정
train_x = train_df.drop(columns = ['ID', '근로기간', '대출등급'])
train_y = train_df['대출등급']
test_x = test_df.drop(columns = ['ID', '근로기간'])
범주형 변수 수치화
-test에는 train에 존재하지 않는 새로운 사례가 있을 수 있기 때문에 append를 사용하여 새로운 경우를 알려줌
from sklearn.preprocessing import LabelEncoder
categorical_features = ['대출기간', '주택소유상태', '대출목적']
for i in categorical_features:
le = LabelEncoder()
le = le.fit(train_x[i])
train_x[i] = le.transform(train_x[i])
for case in np.unique(test_x[i]):
if case not in le.classes_:
le.classes_ = np.append(le.classes_, case)
test_x[i] = le.transform(test_x[i])
display(train_x.head(3))
display(test_x.head(3))
모델 선정 및 학습
랜덤 포레스트 모델 사용
-하나의 결과에 도달하기 위해 여러 의사 결정 트리의 결과를 결합함
-분류와 회귀 문제를 모두 다루며 사용 편의성과 유연성이 뛰어난 모델임
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(train_x, train_y)
예측 수행
pred = model.predict(test_x)
제출 양식에 예측 결과 입력
sample_submission = pd.read_csv('sample_submission.csv')
sample_submission['대출등급'] = pred
sample_submission
예측 결과 저장
-.to_csv() 사용 시 index = False 필수
-index = True 사용할 경우 index를 포함한 3개의 columns 가 파일에 포함되기 때문에 데이콘의 제출 양식과 상이하게 됨
sample_submission.to_csv('baseline_submit.csv', index=False)
'[데이터분석] > Python | AI | 머신러닝' 카테고리의 다른 글
Python을 활용한 프로그래밍 확률통계_Part 2 (0) | 2024.07.29 |
---|---|
실무 중심의 데이터 분석 방법 Part.3 (0) | 2024.07.28 |
실무 중심의 데이터 분석 방법 Part.2 (1) | 2024.07.26 |
Python을 활용한 프로그래밍 확률통계_Part 1 (1) | 2024.07.22 |
실무 중심의 데이터 분석 방법 Part.1 (0) | 2024.07.16 |