안녕하세요 오늘은 빅데이터분석기사 실기시험에 대비하여 빅분기 실기 체험 제2유형을 풀어보겠습니다.
구름EDU - 모두를 위한 맞춤형 IT교육
구름EDU는 모두를 위한 맞춤형 IT교육 플랫폼입니다. 개인/학교/기업 및 기관 별 최적화된 IT교육 솔루션을 경험해보세요. 기초부터 실무 프로그래밍 교육, 전국 초중고/대학교 온라인 강의, 기업/
edu.goorm.io
위 URL로 접속하여 체험이 가능합니다.
문제 풀이 및 주석은 아래와 같습니다.
import pandas as pd
train = pd.read_csv("data/customer_train.csv")
test = pd.read_csv("data/customer_test.csv")
# 사용자 코딩 영역
### 데이터 형식 및 값 체크
# print(train.info())
# print(train.describe())
# print(train['환불금액'].value_counts())
### id, target[y]값 확보 및 필요없는 컬럼 제거
tid = test['회원ID'].copy()
y = train['성별'].copy()
train = train.drop(columns=['회원ID','성별'])
test = test.drop(columns=['회원ID'])
### 결측치 확인 및 처리
# print(train['환불금액'].isna().sum())
# print(test['환불금액'].isna().sum())
train['환불금액'] = train['환불금액'].fillna(train['환불금액'].mode()[0])
test['환불금액'] = test['환불금액'].fillna(test['환불금액'].mode()[0])
# print(train.info())
### 수치형 데이터 스케일 MinMaxScaler / StandardScaler
from sklearn.preprocessing import MinMaxScaler
mms = MinMaxScaler()
mmsCol = train.select_dtypes(exclude='object').columns
train[mmsCol] = mms.fit_transform(train[mmsCol])
test[mmsCol] = mms.transform(test[mmsCol])
# print(train[mmsCol])
# print(test[mmsCol])
### 오브젝트형 데이터 스케일 LabelEncoder
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
train['주구매지점'] = le.fit_transform(train['주구매지점'])
test['주구매지점'] = le.transform(test['주구매지점'])
train['주구매상품'] = le.fit_transform(train['주구매상품'])
test['주구매상품'] = le.transform(test['주구매상품'])
### 데이터 분할
from sklearn.model_selection import train_test_split
x_train,x_val,y_train,y_val = train_test_split(train,y,test_size=0.2,random_state=2025,stratify=y)
# print(x_train.shape)
# print(x_val.shape)
# print(y_train.shape)
# print(y_val.shape)
### 모델링 및 학습
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier()
rf.fit(x_train,y_train)
tmpPred = rf.predict(x_val)
# 모델 성능 평가
from sklearn.metrics import roc_auc_score, accuracy_score
roc = roc_auc_score(y_val, tmpPred)
acc = accuracy_score(y_val, tmpPred)
# print(roc) 0.56
# print(acc) 0.62
# 테스트 모델 예측
pred = rf.predict(test)
#결과 제출
result = pd.DataFrame({'pred':pred})
result.to_csv("result.csv", index=False)
#제출한 데이터 확인
chx = pd.read_csv("result.csv")
print(chx)
'BigData' 카테고리의 다른 글
OneHotEncoding시에 OneHotEncoding.fit()과 df.get_dummies()의 차이는? (0) | 2024.11.07 |
---|---|
LabelEncoder와 OneHotEncoder의 차이는 무엇일까? (1) | 2024.11.05 |
train_test_split의 파라미터에서 stratify는 언제 사용할까? (1) | 2024.11.01 |
roc_curve와 roc_auc_score는 각각 언제 사용할까? (1) | 2024.10.31 |
MinMaxScaler과 StandardScaler는 언제 사용할까? (0) | 2024.10.30 |