작업형 제2유형
"""라벨인코딩, 스케일링, 랜덤포레스트"""
import pandas as pd
import numpy as np
X_train = pd.read_csv("train.csv")
y_train = pd.read_csv("y_train.csv")
X_test = pd.read_csv("X_test.csv")
print(X_train.info())
col_num = ['age']
col_cat = ['race' , 'sex']
# 범주형 변수를 -> 레이블 인코딩하여 정수 형태로 변환하자
# 레이블 인코딩한 데이터는 선형 모델에 적합하지 않다.
# 비선형 모델인 랜덤포레스트와 XGBoost 알고리즘을 사용하자.
from sklearn.preprocessing import LabelEncoder
X = pd.concat([X_train, X_test])
for col in col_cat :
le = LabelEncoder()
le.fit(X_train[col])
X_train[col] = le.transform(X_train[col])
X_test[col] = le.transform(X_test[col])
# 모델링
# 1. 분할
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.3)
# 수치형 변수 scaling
from sklearn.preprocessing import StandardScaler
scale = StandardScaler()
scale.fit_transform(X_tr[col_num])
X_tr[col_num] = scale.transform(X_tr[col_num])
X_val[col_num] = scale.transform(X_val[col_num])
X_test[col_num] = scale.transform(X_test[col_num])
# 2. 모델 생성
# 3. 모델 학습
from sklearn.ensemble import RandomForestClassifier
model_rf = RandomForestClassifier()
# model_rf.fit(X_tr, y_tr)
model_rf.fit(X_tr, y_tr.values.ravel())
# Scikit-learn의 fit() 메서드는 1차원 타겟 벡터 ((21113,))를 기대합니다.
# 지금처럼 (21113, 1) 형태일 경우, 명시적으로 1차원으로 바꿔주는 게 안전합니다.
# 4. 평가
# 5. 예측
from sklearn.metrics import roc_auc_score
y_pred = model_rf.predict_proba(X_val)
score = roc_auc_score(y_val, y_pred[:,1])
print(score)
# 'capital_gain', 'capital_loss' 변수 제외
# GridSearchCV 로 하이퍼파라미터 탐색
pred = model_rf.predict_proba(X_test)[:,1]
pd.DataFrame( {'index' : X_test.index, 'target' : pred}).to_csv('income.csv', index=False)
[빅데이터분석기사] 합격 후기
필기를 합격하고학기 종강하고실기 시험까지 며칠이 없어서 기출 몇 회 풀고 갔습니다[빅데이터분석기사] 필기 공부법 및 후기 [빅데이터분석기사] 필기 공부법 및 후기정말 감사하게도, 유튜
doraemin.tistory.com
'Algorithms' 카테고리의 다른 글
| [빅데이터분석기사][실기] 작업형 제3유형 (0) | 2025.06.21 |
|---|---|
| Linear Search Algorithm (선형 탐색) _ average-case performance (0) | 2024.03.18 |
| No.11399_ATM (3) | 2024.03.14 |