본문 바로가기

자격증공부/빅데이터분석기사

[빅데이터분석기사] 작업형2 예시문제 (분류)

320x100

빅데이터분석기사

* 퇴근후딴짓 님의 강의를 참고하였습니다.*

 

[ 문제 ] 

아래는 백화점 고객의 1년간 구매 데이터이다.

(가) 제공데이터 목록

 1. y_train.csv : 고객의 성별데이터(학습용), csv형식의 파일

 2. X_train.csv, X_test.csv : 고객의 상품구매속성(학습용 및 평가용), csv형식의 파일

(나) 데이터 형식 및 내용

 1. y_train.csv (3,500명 데이터)

빅데이터분석기사

 2. X_train.csv (3,500명 데이터), X_test.csv (2,482명 데이터)

빅데이터분석기사

고객 3,500명에 대한 학습용데이터(y_train, X_train)를 이용하여 성별예측모형을 만든 후, 이를 평가용 데이터(X_test)에 적용하여 얻은 2,482명 고객의 성별 예측값(남자일 확률)을 다음과 같은 형식의 csv파일로 생성하시오. (제출한 모델의 성능은 ROC_AUC 평가 지표에 따라 채점)

 

빅데이터분석기사

(유의사항)

 - 성능이 우수한 예측모형을 구축하기 위해서는 적절한 데이터 전처리, Feature Engineering, 분류 알고리즘 사용, 초매개변수 최적화, 모형 앙상블 등이 수반되어야 한다

 - 수험번호.csv 파일이 만들어지도록 코드를 제출한다.

 

반응형

 

[ 풀이 ]

1. 라이브러리 및 데이터 불러오기

import pandas as pd

X_train = pd.read_csv("X_train.csv")
y_train = pd.read_csv("y_train.csv")
X_test = pd.read_csv("X_test.csv")

 

2. EDA (데이터 탐색)

# 데이터 크기
X_train.shape, y_train.shape, X_test.shape

# 데이터 샘플 X_train
X_train.head(3)
# 데이터 샘플 y_train
y_train.head(3)
# 데이터 샘플 X_test
X_test.head(3)

# [Tip] 컬럼이 다보이지 않을 때
pd.set_option('display.max_columns',None)

# 결측치 확인 train
X_train.isnull().sum()
# 결측치 확인 test
X_test.isnull().sum()

# 기초 통계
X_train.describe()
# 기초 통계 object
X_train.describe(include='object')
X_test.describe(include='object')

# [Tip] 지수표현식(과학적표기법) 사용 X
pd.options.display.float_format = '{:.2f}'.format
X_train.describe()

X_train['주구매상품'].unique()
X_test['주구매상품'].unique()

# [Tip] set 타입으로 변경하면 비교 가능함
a = set(X_train['주구매상품'].unique())
b = set(X_test['주구매상품'].unique())
print(a - b)
print(a.difference(b))

# target(label) 값 확인
y_train['gender'].value_counts()

 

3. 데이터 전처리

# 결측치처리
X_train = X_train.fillna(0) # 환불금액 0값으로 채움
X_test = X_test.fillna(0)

# id 삭제함 (단 test의 id값은 csv파일을 생성할 때 필요함으로 옮겨 놓음)
X_train = X_train.drop(['cust_id'], axis=1)
cust_id = X_test.pop('cust_id')

 

4. 피처엔지니어링

ㅇ LabelEncoder(범주형)

# from sklearn.preprocessing import LabelEncoder
# cols = ['주구매상품', '주구매지점']

# for col in cols:
#     le = LabelEncoder()
#     X_train[col] = le.fit_transform(X_train[col])
#     X_test[col] = le.transform(X_test[col])

# X_train.head()

from sklearn.preprocessing import LabelEncoder
col = '주구매상품'
le = LabelEncoder()
X_train[col] = le.fit_transform(X_train[col])
X_test[col] = le.transform(X_test[col])

col = '주구매지점'
le = LabelEncoder()
X_train[col] = le.fit_transform(X_train[col])
X_test[col] = le.transform(X_test[col])

X_train.head()

 

ㅇ MinMaxScaler(수치형)

from sklearn.preprocessing import MinMaxScaler

cols = ['총구매액', '최대구매액', '환불금액', '내점일수', '내점당구매건수', '주말방문비율', '구매주기']
scaler = MinMaxScaler()
X_train[cols] = scaler.fit_transform(X_train[cols])
X_test[cols] = scaler.transform(X_test[cols])
X_train.head()

 

320x100

 

5. 검증 데이터 분리

# 검증 데이터 분리
from sklearn.model_selection import train_test_split
X_tr, X_val, y_tr, y_val = train_test_split(X_train, 
                                            y_train['gender'],
                                            test_size=0.2,
                                            random_state=2022)

X_tr.shape, X_val.shape, y_tr.shape, y_val.shape

 

6. 모델링 및 평가 (분류 / RandomForest)

# 모델링 & 하이퍼파라미터 튜닝 & 앙상블
from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(random_state=2022)
model.fit(X_tr, y_tr)
pred = model.predict_proba(X_val)

# 예측 결과 확인
pred

# 검증 데이터 셋으로 평가
from sklearn.metrics import roc_auc_score
roc_auc_score(y_val, pred[:,1])

 

 

7. 예측 및 제출

# test 데이터 예측
pred = model.predict_proba(X_test)
pred

# 데이터 프레임 만들기
submit = pd.DataFrame(
            {
                'cust_id':cust_id,
                'gender':pred[:,1]
            }
        )
        
# 샘플 데이터 확인
submit.head()

# csv 생성
submit.to_csv("000111.csv", index=False)

pd.read_csv("000111.csv")

 

 

 

2023.06.12 - [자격증공부/빅데이터분석기사] - [빅데이터분석기사][작업형1] 판다스 문법 활용 요약

 

[빅데이터분석기사][작업형1] 판다스 문법 활용 요약

1. 라이브러리 및 데이터 읽어오기 ㅇ 컬럼명 확인할 수 있도록 세팅하기 import pandas as pd df = pd.read_csv('ㅇㅇㅇㅇ.csv') pd.set_option('display.max_columns', None) #컬럼명 전부 확인할 수 있도록 셋팅하기 2.

inform.workhyo.com

 

2023.06.12 - [자격증공부/빅데이터분석기사] - [빅데이터분석기사][작업형2] 머신러닝 이론 및 프로세스 요약

 

[빅데이터분석기사][작업형2] 머신러닝 이론 및 프로세스 요약

* 퇴근후딴짓 님의 강의를 참고하였습니다. * 1. 머신러닝 ㅇ기존에는 데이터/규칙을 Rule Base로 결과를 도출하였지만, 머신러닝은 데이터와 결과(해답)을 기반으로 학습을 통해 규칙을 도출하고

inform.workhyo.com

 

320x100
반응형