단답형 (10문제)
여러 명의 사용자들이 컴퓨터에 저장된 많은 자료들을 쉽고 빠르게
조회, 추가, 수정, 삭제할 수 있도록 해주는 소프트웨어는 무엇인가?
--> DBMS
작업형 제 1유형 : 데이터 처리 영역 (3문제)
mtcars 데이터셋(data/mtcars.csv)의 qsec 컬럼을 최소최대 척도(min-max-scale)로 변환한 후
0.5보다 큰 값을 가지는 레코드 수를 구하시오.
# 출력을 원하실 경우 print() 활용
# 예) print(df.head())
# 답안 제출 예시
# print(레코드 수)
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
mtcars=pd.read_csv('data/mtcars.csv')
scaler = MinMaxScaler()
qsec = pd.DataFrame(mtcars['qsec']) # 필요
qsec = scaler.fit_transform(qsec)
print(len(qsec[qsec > 0.5])) # 9
작업형 제 2유형 : 모델 구축 및 평가 영역 (1문제)
고객 3,500명에 대한 학습용 데이터(y_train.csv, X_train.csv)를 이용하여 성별예측 모형을 만든 후,
이를 평가용 데이터(X_test.csv)에 적용하여 얻은 2,482명 고객의 성별 예측값(남자일 확률)을
다음과 같은 형식의 CSV 파일로 생성하시오. (제출한 모델의 성능은 ROC-AUC 평가지표에 따라 채점)
<유의사항> 성능이 우수한 예측모형을 구축하기 위해서는 적절한 데이터 전처리, Feature Engineering, 분류 알고리즘 사용, 초매개변수 최적화, 모형 앙상블 등이 수반되어야 한다
- 성별예측 모형 -> 분류 모델
- 성별 예측값 - 남자일 확률 : predict_proba
- 데이터 전처리 : NA값 처리, 데이터 요약
- Feature Engineering : 범주형 - 원핫인코딩, / 연속형 - 스케일 조정, 구간 분할 등
- 분류 알고리즘 : 로지스틱회귀분석, Decision tree 등
- 초매개변수 최적화 : cv 등 활용
- 모형 앙상블- 배깅, 부스팅, RF, 스태킹, 보팅 등
# 출력을 원하실 경우 print() 활용
# 예) print(df.head())
# 답안 제출 예시
# 수험번호.csv 생성
# DataFrame.to_csv("0000.csv", index=False)
import pandas as pd
y_train = pd.read_csv('data/y_train.csv')
x_train = pd.read_csv('data/X_train.csv')
x_test = pd.read_csv('data/X_test.csv')
######################## 데이터전처리 ########################
# print(x_train.isna().sum())
# print(x_train.columns)
# print(x_train.iloc[:,:7].describe())
# print(x_train.iloc[:,7:].describe())
x_train['환불금액'] = x_train['환불금액'].fillna(0)
x_test['환불금액'] = x_test['환불금액'].fillna(0)
# print(train.isna().sum().sum())
######################## FE ########################
# from sklearn.preprocessing import LabelEncoder
# for i in x_train[['주구매상품','주구매지점']]:
# print(x_train[i].value_counts())
# print('------------') # 주구매상품, 주구매지점 -> 범주형
merchandise = pd.get_dummies(x_train['주구매상품'], prefix='주구매상품',drop_first=True)
store = pd.get_dummies(x_train['주구매지점'], prefix='주구매지점',drop_first=True)
x_train = pd.concat([x_train,merchandise,store], axis=1)
# print(len(x_train.columns))
x_train.drop(columns=['주구매상품','주구매지점','cust_id','주구매상품_소형가전'],inplace=True)
# print(len(x_train.columns))
merchandise = pd.get_dummies(x_test['주구매상품'], prefix='주구매상품',drop_first=True)
store = pd.get_dummies(x_test['주구매지점'], prefix='주구매지점',drop_first=True)
x_test = pd.concat([x_test,merchandise,store], axis=1)
# print(len(x_test.columns))
cust_id = x_test['cust_id']
x_test.drop(columns=['주구매상품','주구매지점','cust_id'],inplace=True)
# print(len(x_test.columns))
# print(set(x_train.columns) - set(x_test.columns))
######################## 분류알고리즘 ########################
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score
rf = RandomForestClassifier(max_depth=2)
rf.fit(x_train, y_train['gender'])
y_predict_rf = rf.predict_proba(x_test)
print('RF ROCAUC Score: ', roc_auc_score(y_train['gender'], pd.DataFrame(rf.predict_proba(x_train)).iloc[:,1]))
lr = LogisticRegression()
lr.fit(x_train, y_train['gender'])
y_predict_lr = lr.predict_proba(x_test)
print('LR ROCAUC Score: ', roc_auc_score(y_train['gender'], pd.DataFrame(lr.predict_proba(x_train)).iloc[:,1]))
######################## 제출 ########################
y_predict = pd.DataFrame(y_predict_lr)
submit=pd.concat([cust_id,y_predict.iloc[:,1]],axis=1)
print(submit)
submit.to_csv('210530.csv',index=False)
( + ) 참고 사이트
https://dataq.goorm.io/exam/116674/%EC%B2%B4%ED%97%98%ED%95%98%EA%B8%B0/quiz/1
'Career > Certificate' 카테고리의 다른 글
[빅데이터분석기사] 실기 - sklearn (1) | 2021.06.10 |
---|---|
[빅데이터분석기사] 실기 - 작업형 제 1유형 (2) | 2021.06.09 |
[빅데이터분석기사] 필기 - 4. 빅데이터 결과 해석 (0) | 2021.05.30 |
[빅데이터분석기사] 필기 - 3. 빅데이터 모델링 (0) | 2021.05.30 |
[빅데이터분석기사] 필기 - 2. 빅데이터 탐색 (0) | 2021.05.30 |
댓글