파이썬 실기 필수 암기 및 예제
추천글 : 【빅데이터분석기사】 빅데이터분석기사 목차
※ 제6회 빅데이터분석기사 실기시험(2023.06.24)부터 기존 단답형 10문제를 작업형 신규 유형인 '작업형 제3유형'으로 대체 (ref)
※ 일반적으로 유형 1은 파이썬으로 풀기 좋고, 유형 2, 유형 3은 R로 풀기를 권장합니다.
※ 빅데이터분석기사 실기 체험 : 실행시간만 1분으로 한계가 있고, 실행횟수는 제한 없음
- 타입 체크 : type(x)
- 길이 : len(x)
- 차원 (e.g., numpy.ndarray, cv2.imread) : x.shape
- 차원 (e.g., PIL.PngImagePlugin.PngImageFile, PIL.Image.open) : x.size
- int로 형변환 : .astype(int)
- 주어진 배열에서 고유한 원소들의 집합 : .unique()
- x초 만큼 대기 : time.sleep(x)
- 리스트가 있을 때 index와 함께 for 문을 쉽게 생성하는 법 : for index, e in enumerate(my_list): ...
- 주어진 문장을 '_' 단위로 쪼개고 그 중 앞 부분만을 취함 : myStr.split('_')[0]
A. 작업형 제1유형(30점; 3문제)
⑴ 개요
① 데이터 타입 : object, int, float, bool 등
② 기초 통계량 : 평균, 중앙값, 사분위수, IQR, 표준편차 등
③ 데이터 인덱싱, 필터링, 정렬, 변경 등
④ 결측치, 이상치, 중복값 처리 (제가 또는 대체)
⑤ 데이터 정규화 : Z-scaling, min-max normalization 등
⑥ 데이터 합치기
⑦ 날짜/시간 데이터
⑵ 문제 예시
제공된 데이터(data/mtcars.csv)의 qsec 칼럼을 최소-최대 척도(Min-Max Scale)로 변환한 후 0.5보다 큰 값을 가지는 레코드 수를 【제출 형식】에 맞게 답안 작성 페이지에 입력하시오.
【유형 1】 ㉠ 정수(integer)로 입력 (단, 소수점을 포함한 경우 소수점 첫째 자리에서 반올림하여 계산) ㉡ 정수 답안만 입력
⑶ 풀이 (추후 업데이트)
B. 작업형 제2유형(40점; 1문제)
⑴ 개요
① 분류모델 : 연속 변수로 명목 변수를 예측. SVM, 결정나무, 랜덤 포레스트(분류 알고리즘 중 가장 뛰어남)를 주로 사용
② 회귀모델 : 연속 변수로 연속 변수를 예측. 선형회귀, probit, logit을 주로 사용
⑵ 문제 예시
제공된 데이터는 백화점 고객이 1년간 상품을 구매한 속성 데이터이다. 제공된 학습용 데이터(data/customer_train.csv)를 이용하여 백화점 구매 고객의 성별을 예측하는 모델을 개발하고, 개발한 모델에 기반하여 평가용 데이터(data/customer_test.csv)에 적용하여 얻은 성별 예측 결과를 【제출 형식】에 따라 CSV 파일로 생성하여 제출하시오.
* 예측 결과는 ROC-AUC 평가지표에 따라 평가함
* 성능이 우수한 예측 모델을 구축하기 위해서는 데이터 정제, Feature Engineering, 하이퍼 파라미터(hyper parameter) 최적화, 모델 비교 등이 필요할 수 있음. 다만, 과적합에 유의하여야 함.
【제출 형식】
㉠ CSV 파일명 : result.csv (파일명에 디렉토리∙폴더 지정 불가)
㉡ 예측 성별 칼럼명 : pred
㉢ 제출 칼럼 개수 : pred 칼럼 1개
㉣ 평가용 데이터 개수와 예측 결과 데이터 개수 일치 : 2,482개
⑶ 풀이
① 데이터 불러오기
② EDA
③ 데이터 전처리
④ 데이터 분리
⑤ 검증 및 예측
⑥ 제출
⑷ 풀이 1. 회귀(regression)
import pandas as pd
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
print(train.shape, test.shape)
print(train.info())
print(train.describe())...
print(train.isnull().sum())
print(test.isnull().sum())
cols = 결측치
train = train.drop(cols, axis = 1)
test = test.drop(cols, axis = 1)
train.shape, test.shape
train = train.fillna(0)
test = test.fillna(0)
train = train.drop('id', axis = 1)
test_id = test.pop('id')
test.head()
cols = train.select_dtypes(include='object').columns
from sklearn.preprocessing import LabelEncoder
for col in cols:
le = LabelEncoder()
train[col] = le.fit_transform(train[col])
test[col] = le.transform(test[col])
from sklearn.model_selection import train_test_split
X_tr, X_val, y_tr, y_val = train_test_split(train.drop('price', axis=1), train['price'], test_size = 0.1, random_state = 2023)
from sklearn.ensemble import RandomForesrRegressor
rf = RandomForestRegressor()
rf.fit(X_tr, y_tr)
pred = rf.predict(X_val)
from sklearn.metrics import r2_score, mean_absolute_error, mean_squared_error
print(r2_score(y_val, pred))
print(mean_absolut_error(y_val, pred))
print(mean_squared_error(y_val, pred))
pred = rf.predict(test)
pd.DataFrame({'id':test_id, 'price':pred).to_csv('0000.csv', index=False)
⑸ 풀이 2. 분류(classification)
import pandas as pd
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
cols = train.select_dtypes(include = 'object').columns
from sklearn.preprocessing import LabelEncoder
for col in cols:
le = LabelEncoder()
train[col] = le.fit_transform(train[col])
test[col] = le.transform(test[col])
train = train.drop('CLIENTNUM', axis=1)
test_id = test.pop('CLIENTNUM')
# print(train.head())
from sklearn.model_selection import train_test_split
X_tr, X_val, y_tr, y_val = train_test_split(train.drop('Attrition_Flag', axis =1), train['Attrition_Flag'], test_size = 0.2, random_state = 2023)
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier()
rf.fit(X_val, y_val)
pred = rf.predict(X_val)
pred_proba = rf.predict_proba(X_val)
print(pred.shape)
from sklearn.metrics import roc_auc_score, accuracy_score, f1_score, recall_score
print(f1_score(y_val, pred))
print(accuracy_score(y_val, pred))
print(recall_score(y_val, pred))
print(roc_auc_score(y_val, pred_proba[:,1]))
pred = rf.predict(test)
pd.DataFrame({'CLIENTNUM':test_id, 'Attrition_Flag':pred}).to_csv('oooo.csv', index=False)
C. 작업형 제3유형(30점; 2문제; 문제마다 소문제 존재)
⑴ 개요
⑵ 문제 예시
제공된 데이터(data/Titanic.csv)는 타이타닉호의 침몰 사건에서 생존한 승객 및 사망한 승객의 정보를 포함한 자료이다. 아래 데이터를 이용하여 생존 여부(Survived)를 예측하고자 한다. 각 문항의 답을 【제출 형식】에 맞춰 답안 작성 페이지에 입력하시오. (단, 벌점화(penalty)는 부여하지 않는다.)
① Gender와 Survived 변수 간의 독립성 검정을 실시하였을 때, 카이제곱 통계량은? (반올림하여 소수 셋째 자리까지 계산)
② Gender, SibSp, Parch, Fare를 독립변수로 사용하여 로지스틱 회귀모형을 실시하였을 때, Parch 변수의 계수값은? (반올림하여 소수 셋째 자리까지 계산)
③ 위 ②번 문제에서 추정된 로지스틱 회귀모형에서 SibSp 변수가 한 단위 증가할 때 생존할 오즈비(Odds ratio) 값은? (반올림하여 소수 셋째 자리까지 계산)
【제출 형식】 ㉠ 소수 넷째 자리에서 반올림하여 소수 셋째 자리까지만 계산
⑶ 풀이 (추후 업데이트)
입력: 2024.06.02 12:21
'▶ 자연과학 > ▷ 컴퓨터과학' 카테고리의 다른 글
【빅데이터분석기사】 R 실기 필수 암기 및 예제 (0) | 2023.11.28 |
---|---|
【빅데이터분석기사】 필기 키워드 정리 (0) | 2023.11.19 |
【Excel】 Excel 단축키 모음 (0) | 2021.09.09 |
【컴퓨터 활용】 Excel 목차 (0) | 2018.10.05 |
【한글】 자주 쓰는 한글 단축키 (0) | 2018.10.03 |
최근댓글