-
빅데이터 분석 기사 실기 작업형 2유형 대비 : 한장만 외우기 : 꿀팁DATA_CERTIFICATES 2023. 10. 30. 22:52
저는 시험볼 떄, 딱 이것만 달달 외워서 갔습니다.
화이팅
# print(dir( )) print(help( )) : method 사용시
#문제에서 주어지는 성능평가 확인하고 => 방법이랑 기타 등등 원도우 메모장에 복사하기
시험 문제풀이 순서 작업형2 (모델링)-> 작업형1(데이터 조회/탐색 등) -> 작업형3(통계)
모델링 1문항에 40점이라는 배점은 꼭 챙겨야합니다 .
1. 작업형 2 유형 순서 먼저 적어두기
1) 데이터 다운로드
2) EDA
x_train.info() x_train.isna().sum() x_train.nunique() x_train.describe()
3 ) x 컬럼 드랍, y컬럼 타겟만
4 ) 결측치 처리
5 + 6) 라벨링+스케일링 한번에 하기
from sklearn.compose import make_column_transformer from sklearn.preprocessing import StandardScaler, OneHotEncoder
7) validation
from sklearn.model_selection import train_test_split
8) 모델선택
#분류 : from sklearn.ensemble import RandomForestClassifier #회귀 : from sklearn.ensemble import RandomForestRegressor model.fit(x_train, y_train) #이진분류 : y_pred = model.predict_proba(x_val)[:,1] #회귀,#다중분류: y_pred = modelpredic(x_val)
9) 모델 성능 평가
print( 성능지표_score(y_val, y_pred) ) )
##분류 성능평가
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score from sklearn.metrics import roc_auc_score, r2_score #결정계수 from sklearn.metrics import classification_report
##회귀 성능평가
from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error, from sklearn.metrics import r2_score #결정계수
10) 결과 제출
pred_proba = model.predict_proba(x_test2)[:,1] #이진 분류 pred_label = model.predict(x_test2) #회귀, 다중분류 pd.DataFrame({'컬럼명': x_test.컬럼명, '타겟컬럼명': predict_test_proba}).to_csv('수험번호.csv', index=False)
11) 확인
df = pd.read_csv(‘수험번호.csv’) print(df.head())
2. 작업형 2유형 작성하기
1) 데이터를 다운로드
import pandas as pd x_train =pd.read_csv() x_test = pd.read_csv() y_train= pd.read_csv()
2) EDA 데이터 탐색 + 결측치 확인 =>
윈도우 메모장에 복사하기 => 7회차부터는 IDE 자체 메모장 제공x_train.info() x_train.isna().sum() x_train.nunique() x_train.describe() x_test.info() x_test.isna().sum() x_tesr.nunique() x_test.describe() y_train.info() y_train.isna().sum() y_train.describe() y_train.nunique()
3) 변수를 구분, object범주형인지, 수치형인지 구분하고 불필요한 column의 경우 drop
## ( nunique()가 많은 컬럼은 삭제하는 것이 좋음) drop_col = ['' , '','컬럼명' ] x_train1 = x_train.drop(columns= drop_col) x_test1 = x_test.drop(columns= drop_col) #y_train에서는 Target column만 추출 y_train1 = y_train['타겟컬럼명'] y_test1 = y_test['타겟컬럼명'] # 만일 y_test값이 주어지면, #예시 Y_test1 = Y_test['price'] Y_test1 = Y_test[:, 1] # index와 값만 있는 경우 iloc를 사용할수도있었음
4) 결측치 처리하기 :
- 대체 fillna()
- 제거 dropna(subset=['컬럼명'], axis=0) # how='any' 'all'.....
- 가급적 행은 제거하면 안됨.... 갯수가 맞아야함. 문제에 써있는 것을 비교해가면서 하기
x_train1['컬럼명'] = x_train1['컬럼명'].fillna( ) x_test1['컬럼명'] = x_test1['컬럼명'].fillna( )
# 컬럼별로 결측치가 다른경우 onehotencoding으로 pd.get_dummies 사용 5)으로
5) label encoding : 문자형 데이터를 수치형 데이터로 변환
from sklearn.preprocessing import LabelEncoder, OneHotEncoder label_e = LabelEncoder() # 라벨링에 필요한 컬럼명 label_list = ['컬럼명','컬럼명'.....] x_train1[label_list] = x_train1[label_list].apply(label_e.fit_transform ) x_test1[label_list] = x_test1[label_list].apply(label_e.fit_transform ) ## 회귀regressor 에서는 OneHotEncoder를 사용 One_e = OneHotEncoder() x_train2 = pd.get_dummies(x_train1, drop_first=True ) x_test2 = pd.get_dummies(x_test1, drop_first=True ) #이후 test와 train의 컬럼순서를 동일화 x_test2 = x_test2[x_train2.columns]
## 데이터 타입 변환 확인하기
x_train2.dtypes x_test2.dtypes
번외 5+6) ###라벨링+스케일링 한번에 하기 : 저는 이걸로 풀었음
from sklearn.compose import make_column_transformer from sklearn.preprocessing import StandardScaler, OneHotEncoder c_num = x_train1.select_dtypes(exclude=object) #print(c_num.columns) #수치형라벨링 c_obj = x_train1.select_dytpes(include=object) #print(c_obj.columns)#명목형 라벨링 ct = make_column_transformer( (StandardScaler(), c_num.columns) , (OneHotEncoder(sparse=False), c_obj.columns) ) ct.fit(x_train1) x_train2 = ct.transform(x_train1) x_test2 = ct.transform(x_test1)
fit()은 train 데이터만 적용!!!
6) 표준화스케일, 최대 최소 스케일
## StandardScaler from sklearn.preprocessing import StandardScaler s_scaler = StandardScaler() scale_list = ['스케일컬럼','스케일컬럼2','',...... ] s_scaler.fit(x_train2[scale_lsit]) x_train2[scale_list] = s_scaler.transform(x_train2[scale_list] ) x_test2[scale_list] = s_scaler.transform(x_test2[scale_list]) ##MinMaxScaler from sklearn.preprocessing import MinMaxScaler m_scaler = MinMaxScaler() scale_list = ['스케일컬럼','스케일컬럼2','',...... ] m_scaler.fit(X_train2[scale_list]) x_train2[scale_list] = s_scaler.transform(x_train2[scale_list] ) x_test2[scale_list] = s_scaler.transform(x_test2[scale_list])
7) 데이터 분리 hold – out 검증용 데이터를 생성한다.
# 보통 시험에서는 x_test , x_train, y_train 데이터를 받음 # 만약 y_test데이터가 주어진다면, validation data는 따로 생성할 필요가 없다. from sklearn.model_selection import train_test_split x_train, x_val, y_train, y_val = train_test_split(x_train2, y_train1, test_size = 0.2, stratify=y_train1) # 분류에서만 stratify을 씀 #stratify= 타켓데이터 가 들어감 ,분류에서 특정 클래스 비율을 유지시켜줌 ##데이터 확인 print(x_train.shape, x_val.shape, y_train.shape, y_val.shape)
8) 모델 선택 & 학습
### 분류 from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier(max_depth=5, n_estimators=100) ### 회귀 from sklearn.ensemble import RandomForestRegressor model = RandomForestRegressor(max_depth=5, n_estimators=100)
model.fit(x_train2, y_train1) #마지막에 최종으로 다듬었던?? 데이터들을 넣어야함 y_pred = model.predict(x_test2) # x_val2
9) 모델 성능 평가 :
# import sklearn.metrics # print(dir(sklearn.metrics)) ##분류 성능평가 from sklearn.metrics import accuracy_score,precision_score, recall_score,f1_score from sklearn.metrics import roc_auc_score, r2_score #결정계수 from sklearn.metrics import classification_report #y_test 데이터가 주어진 경우 print(accuracy_score(y_test1, y_pred1))
##회귀 성능평가 from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error, from sklearn.metrics import r2_score #결정계수 #RMSE rmse_value = mean_squared_error(y_test1, y_pred1, squared=False) #기본값이 루트이다... print(rmse_value
10) 결과 출력 및 파일 저장
# 분류 예측값 predict_test_label = model.predict(x_test2) pd.DataFrame( { '컬럼명 ' : x_test.컬럼명, '타겟컬럼명': predic_test_label}).to_csv('수험번호.csv', index=False) #분류 확률값 : proba를 쓰는 경우는 이진 분류 체계인 경우임, 데이터 확인해보고 쓰기 #문제에서 roc_auc등으로 성능평가한다고 써있음 predict_test_proba = model.predict_proba(x_test2)[:,1] # proba probability pd.DataFrame({'컬럼명': x_test.컬럼명, '타겟컬럼명': predict_test_proba}).to_csv('수험번호.csv', index=False)
11) 저장된 결과 데이터 확인
final = pd.read_csv('수험번호.csv') print(final.head())
'DATA_CERTIFICATES' 카테고리의 다른 글
리눅스 마스터 2급 취득 후기 및 팁 (1) 2024.01.19 AICE Associate 자격증 합격 후기& 팁 (0) 2023.11.17 빅데이터 분석 기사 실기 대비 : 파이썬 필수 함수 모음 (2) 2023.10.30 데이터 자격증 시험 자료 모음(ADSP,SQLD,빅데이터분석기사) (0) 2023.09.09 SQLD- SQL개발자 자격증 합격 후기 & 팁 (2) 2023.09.09