분류
- 주로 a인지 b인지 판단하는 과제
ex) 사원들이 이직을 할 것인가? 안할 것인가? (이직 : 1, 이직X: 0)
따라서 보통은 pred결과가 0 혹은 1로 분류됨
# 라이브러리 및 데이터 호출
import pandas as pd
import numpy as np
x_train = pd.read_csv('주소.csv')
y_train = pd.read_csv('주소.csv')
x_test = pd.read_csv('주소.csv')
#만약 train 데이터셋이 하나라면,
# train = pd.read_csv('주소.csv') 로 일단 불러온 다음
# y_train = train[['id', '타겟이 되는 컬럼명']]
# x_train = train.drop(['타겟이 되는 컬럼명'], axis=1) # 타겟컬럼을 먼저 drop하면 y_train으로 나눌 수 없으므로 y_trian을 먼저 분리해줌
# EDA
# 데이터프레임 눈으로 확인하기
display(x_train.head()) # print 함수로 찍으면 표 형태가 아닌 텍스트 형태로 출력됨
# 행,열 갯수 확인
print(x_train.shape) # 결과는 (행 개수, 열 개수) 로 출력
# 컬럼별 데이터 개수와 데이터 타입 확인하기
print(x_train.info())
# 컬럼별 결측치 확인하기
print(x_train.isnull().sum())
# 위의 단계를 모든 데이터셋에 적용하여 각각 확인
# 전처리
이상치, 결측치 등등 처리할 부분이 있다면 처리 후, 전처리 결과를 EDA 항목처럼 중간 확인
(확인 후 출력 결과는 주석처리하여 숨김 처리)
# id와 같은 고유 값은 drop을 통해 오버피팅 방지해야함
x_train_drop = x_train.drop(['id'], axis=1)
x_test_drop = x_test.drop(['id'], axis=1)
# 만약 타겟 변수의 값이 0,1로 분류되어야하는데 int타입이라면
y_trian['target'] = y_train['target'].astype(str)
# 만약 타겟 변수의 값이 '이직', '이직x' 와 같이 텍스트로 되어있다면
y_train['target'] = y_train['target'].replace('이직', '1') 과 같이 replace함수를 통해 바꿔줌
# 타겟 변수 추출
y = y_train['target']
# 데이터프레임의 모든 전처리가 완료되면 변수들을 인코딩해주어야함
# 원핫인코딩 방식
x = pd.get_dummies(x_train_drop)
test = pd.get_dummies(x_test_drop)
# 컬럼의 순서를 맞춰주는 과정
test = test[x.columns]
# 데이터 셋 분리
from sklearn.model_selection import train_test_split
x_train, x_val, y_train, y_val = train_test_split(x, y, test_size=0.3, random_state = 2025)
# 분류 모델 학습 및 검증 (train & validation) - RandomForestClassifier()
# 랜덤포레스트 분류 모델 학습
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(x_train, y_train)
# 검증 데이터로 성능 확인하기
from sklearn.metrics import roc_auc_score, accuracy_score, classification_report
y_pred = model.predict(x_val)
y_pred_proba = model.predict_proba(x_val)[:,1]
print(classification_report(y_val, y_pred))
print(roc_auc_score(y_val, y_pred_proba))
# 테스트 데이터에 모델 적용하고 최종 결과 저장하기
# 테스트 데이터에 적용하기
y_predict = model.predict(test)
a = pd.DataFrame({'ID': x_test['id'], '지정된 결과 변수명': y_predict})
a.to_csv('지정된 결과 파일명.csv')
회귀
- 주로 확률이나 가격 등 숫자를 예측하는 과제
ex) 주택의 가격은 얼마일지 예측 or 성적이 몇일지 예측
# 라이브러리 및 데이터 호출 ~ # 데이터 스플릿까지 분류 모델과 동일
# 분류 모델 학습 및 검증 (train & validation) - RandomForestRegressor()
# 랜덤포레스트 회귀 모델 학습
from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor()
model.fit(x_train, y_train)
# 평가지표 모듈 불러오고 검증해보기
# 문제에서 명시한 평가지표를 사용하여 측정
from sklearn.metrics import r2_score
val_pred = model.predict(x_val)
# 테스트 데이터에 모델 적용하고 최종 결과 저장하기
# 테스트 데이터 실행 후 결과 저장하기
test_pred = model.predict(test)
a = pd.DataFrame({'지정된 결과 변수명' : test_pred.round(2)}) # 문제에서 반올림을 요구한다면 시행
a.to_csv('지정된 결과 파일명.csv')
'DATA | IT > 빅데이터분석기사' 카테고리의 다른 글
[후기|자격증] 빅데이터분석기사 9회 실기 벼락치기 성공 방법 | 공부법 | 합격 수기 (0) | 2025.01.15 |
---|---|
[공부] 빅데이터분석기사 실기 1유형 | 파이썬 Python 코드 정리 (1) | 2024.11.25 |