본문 바로가기

딥러닝,패턴인식,빅데이터

빅데이터분석기사 체험하기 정답

 

빅데이터 분석기사 체험하기 작업2유형 정답을 공개한다.

실제 시험도 동일한 환경에서 진행하기 때문에 해당 환경에서 익숙해지는것은 필수이다.

주피터 노트북과 다르게 print를 써줘야 하며, 몇가지 다른부분이 있으므로, 꼭 실전 연습을 해보길 바란다.

https://dataq.goorm.io/exam/116674/%EC%B2%B4%ED%97%98%ED%95%98%EA%B8%B0/quiz/3

 

이전 후기에서 말한 것처럼 4회때도 데이터만 변경되었고, 동일하게 출제되었다.

정말 이문제와 100% 동일하였다. 단지 컬럼명만 다를 뿐이였다.

랜덤서치까지는 사용안해도 될 것 같다.

Regression보다는 RandomForest를 사용하는 것을 추천한다.

RandomForest를 활용하여 실제 시험에서 40점 만점을 받았다.

 

# 데이터 파일 읽기 예제

import pandas as pd

X_test = pd.read_csv("data/X_test.csv")

X_train = pd.read_csv("data/X_train.csv")

y_train = pd.read_csv("data/y_train.csv")

 

# 사용자 코딩

# 사용자 코딩

cust_id = X_test[['cust_id']]

X_train.drop('cust_id', axis=1, inplace=True)

X_test.drop('cust_id', axis=1, inplace=True)

y_train = y_train['gender']  

 

X_train = X_train.fillna(0)

X_test = X_test.fillna(0)

 

del_index = X_train[(X_train['총구매액']<0)|(X_train['최대구매액']<0)].index.tolist()

X_train.drop(del_index, axis=0, inplace=True)

y_train.drop(del_index, axis=0, inplace=True)

 

from sklearn.preprocessing import LabelEncoder

encoder = LabelEncoder()

X_train['주구매상품'] = encoder.fit_transform(X_train['주구매상품'])

X_train['주구매지점'] = encoder.fit_transform(X_train['주구매지점'])

X_test['주구매상품'] = encoder.fit_transform(X_test['주구매상품'])

X_test['주구매지점'] = encoder.fit_transform(X_test['주구매지점'])

 

from sklearn.preprocessing import MinMaxScaler

Scaler = MinMaxScaler()

feature_names = X_train.columns

X_train = pd.DataFrame(Scaler.fit_transform(X_train), columns=feature_names)

X_test = pd.DataFrame(Scaler.fit_transform(X_test), columns=feature_names)

 

from sklearn.model_selection import train_test_split

X_train, X_vaild, y_train, y_vaild = train_test_split(X_train, y_train, test_size=0.2, random_state=42)

 

 

from sklearn.ensemble import RandomForestClassifier

from sklearn.model_selection import RandomizedSearchCV

from sklearn.metrics import roc_auc_score

import numpy as np

 

model = RandomForestClassifier(random_state=42)

params = {'max_depth':np.random.randint(5,30,10),

                                             'max_features':np.random.uniform(0.3,1,10)}

 

clf = RandomizedSearchCV(model, params, cv=5, n_iter=10, n_jobs=-1)

clf.fit(X_train, y_train)

y_vaild_proba = clf.predict_proba(X_vaild)[:,1]

 

print(roc_auc_score(y_vaild, y_vaild_proba))