빅분기 실기 | 4회 기출 유형 풀이 작업형 2

2022. 12. 2. 18:09·빅데이터분석기사/실기

빅데이터 분석기사 4회 실기 기출 유형

 

Big Data Analytics Certification KR 2022 | Kaggle

 

www.kaggle.com


코드

# 데이터 불러오기
train=pd.read_csv('/kaggle/input/big-data-analytics-certification-kr-2022/train.csv')
test=pd.read_csv('/kaggle/input/big-data-analytics-certification-kr-2022/test.csv')

# 불필요한 컬럼 제거
id=test['ID']
x_train=train.drop(columns=['ID','Segmentation'])
x_test=test.drop(columns=['ID'])
y_train=train['Segmentation']

# # 결측치 확인
# print(x_train.isnull().sum()) # 결측치 없음
# print(x_test.isnull().sum())

# 라벨 인코딩 - 범주형 변수
from sklearn.preprocessing import LabelEncoder
col=['Gender','Ever_Married','Graduated','Profession','Spending_Score','Var_1']
encoder=LabelEncoder()
for i in col:
    x_train[i]=encoder.fit_transform(x_train[i])
    x_test[i]=encoder.transform(x_test[i])
    x_train[i]=x_train[i].astype('category')
    x_test[i]=x_test[i].astype('category')
    
# 더미 변환
x_train=pd.get_dummies(x_train)
x_test=pd.get_dummies(x_test)

# 스케일링 - 수치형 변수
from sklearn.preprocessing import StandardScaler
val=[['Age','Work_Experience','Family_Size']]
scaler=StandardScaler()
for i in val:
    x_train[i]=scaler.fit_transform(x_train[i])
    x_test[i]=scaler.transform(x_test[i])

# 검증 데이터 분리
from sklearn.model_selection import train_test_split
X_train,X_valid,Y_train,Y_valid=train_test_split(x_train,y_train,test_size=0.2,random_state=10)

# 모델 생성 1(RF)
from sklearn.ensemble import RandomForestClassifier
model1=RandomForestClassifier()
model1.fit(X_train,Y_train)
pred1=model1.predict(X_valid)

# # 모델 생성2(XGB) 
# from xgboost import XGBClassifier 
# model2=XGBClassifier()
# model2.fit(X_train,Y_train)
# pred2=model2.predict(X_valid)
# ValueError: Invalid classes inferred from unique values of `y`. Expected: [0 1 2 3],got [1 2 3 4]

# # 하이퍼파라미터 튜닝
# from sklearn.model_selection import GridSearchCV
# parameters={'n_estimators':[50,100],'max_depth':[4,6]}
# model3=RandomForestClassifier()
# clf=GridSearchCV(estimator=model3, param_grid=parameters, cv=3)
# clf.fit(X_train,Y_train)
# print('최적의 파라미터: ',clf.best_params_) # {'max_depth': 6,'n_estimators': 100}

# 최종 모델(RF)
model4=RandomForestClassifier(max_depth=6, n_estimators=100)
model4.fit(X_train,Y_train)
pred4=model4.predict(X_valid)

# # 성능 평가
# from sklearn.metrics import f1_score
# print('RF1',f1_score(Y_valid,pred1,average='macro')) # 하이퍼파라미터 튜닝 전 0.4795
# print('RF4',f1_score(Y_valid,pred4,average='macro')) # 하이퍼파라미터 튜닝 후 0.5094
# print('XGB',f1_score(Y_valid,pred2,average='macro')) # 0.4992

# 결과 제출
result=model4.predict(x_test)
pd.DataFrame({'ID':id,'Segmentation':result}).to_csv('submission.csv',index=False)

xgb 모델 사용시 ValueError가 발생한다. 0123 순으로 들어와야 하는데 y_train 값이 1234 순이라 발생하는 것으로 추정.

y 값도 LabelEncoding을 진행해주면 된다는 구글링을 통해 해보았더니 ValueError는 해결됨.

but, 하이퍼파라미터 조정이 성능이 더 좋아지기 때문에 y 값 인코딩은 진행하지 않음.

확실히 다중분류가 이진분류보다 성능이 좋지 않다!

 

🔽 Kaggle 노트북 | 모델 RandomForestClassifier - 성능 0.32018

 

[4회 기출 유형 | 작업형2 | Python] RF / 0.31574

Explore and run machine learning code with Kaggle Notebooks | Using data from Big Data Analytics Certification KR 2022

www.kaggle.com

 

반응형
저작자표시 (새창열림)
'빅데이터분석기사/실기' 카테고리의 다른 글
  • 빅분기 실기 | 4회 기출 유형 풀이 작업형 1
  • 빅분기 실기 | 3회 기출 유형 풀이 작업형 1
  • 빅분기 실기 | 3회 기출 유형 풀이 작업형 2
  • 빅분기 실기 | 2회 기출 유형 풀이 작업형 2
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (242)
      • Algorithm (123)
        • 알고리즘 이론 (8)
        • 백준 (19)
        • 프로그래머스 (83)
        • 구름 알고리즘 먼데이 챌린지 (13)
      • 빅데이터분석기사 (10)
        • 통계 (4)
        • 실기 (6)
      • KT에이블스쿨 (26)
      • FrontEnd (11)
        • React (5)
        • 기타 (6)
      • BackEnd (18)
        • Django (15)
        • Spring (3)
      • DS & ML (11)
        • Machine Learning (9)
        • Kaggle (2)
      • TIL (43)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 관리
    • 글쓰기
  • 링크

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
dduniverse
빅분기 실기 | 4회 기출 유형 풀이 작업형 2
상단으로

티스토리툴바