AICE 대비 1탄: 샘플 문항 풀어보기

2025년 04월·KT 에이블스쿨

AICE란? KT에서 개발했고 KT와 한국경제신문이 공동주관하는 인공지능 활용능력 시험이다

에이블스쿨 수강하면서 반강제로 응시하게 되었다 ㅎ (물론 할인 쿠폰도 주고 지원금도 줌)

AICE에는 5개 트랙이 있는데 그중 이번에 내가 응시하는 트랙은 Associate ! 유일한 국가공인자격이다

더보기
  • 응시료: 8만원 꽤비쌈 ㄷㄷ
  • 문항 수: 총 14개로 데이터 분석 5~6문항, 전처리 및 시각화 4~5문항, 모델링(머신러닝, 딥러닝) 4~5문항
  • 응시 시간: 90분
  • 참고자료 활용 기준: 오픈북 시험이다 (원래는 구글링도 가능했는데 이번에 기이 바뀌어서 사전에 정해 7개 공식 사이트만 볼 수 있게 되었다 ; (◞‸◟) 아마 국가공인자격이 되면서 바꾼듯
  • 합격 기준: 100점 만점에 80점 이상 득점 시 합격
  • 결과 확인: 응시 결과는 시험 응시일로부터 2주 후에 확인 가능
  • 유효기간: 응시일로부터 3년

시험이 이틀밖에 남지 않았으니 샘플문항을 풀어보면서 가볍게 정리를 해보려고 한다

 

1. 기초 라이브러리 로드

scikit-learn을 sk, pandas를 pd라는 별칭(alias)으로 임포트하는 코드 작성하기

import sklearn as sk
import pandas as pd

 

2. 데이터 불러오기 및 병합

다음 지시에 따라 데이터를 읽고 병합하는 코드 작성하기

🔹 A00071T.json → df_a

🔹 signal.csv → df_b

🔹 두 데이터를 키 'RID'를 기준으로 inner join하여 df라는 데이터프레임으로 저장하기

df_a = pd.read_json('A0007IT.json')
df_b = pd.read_csv('signal.csv')

df = pd.merge(df_a, df_b, on='RID', how='inner')

 

3. 범주형 변수 시각화 및 정제

🔹 Address1 컬럼에 대해 Seaborn의 countplot으로 분포 그래프를 시각화하기

🔹 지역명이 없는 '-'에 해당되는 행을 삭제하기

🔹 그래프를 보고 옳지 않은 선택지를 골라 답안04 변수에 저장하기

import matplotlib.pyplot as plt
import seaborn as sns

sns.countplot(x='Address1', data=df)
plt.show()

df = df[df['Address1'] != '-']

답안04 = 3

 

4. 수치형 변수 시각화 및 이상치 탐지

Time_Driving(실주행시간)을 x축, Speed_Per_Hour(평균시속)을 y축으로 하는 jointplot을 Seaborn으로 시각화하기

sns.jointplot(x='Time_Driving', y='Speed_Per_Hour', data=df)
plt.show()

 

5. 이상치 제거 및 컬럼 정제

🔹 평균 시속(Speed_Per_Hour)이 300 이상인 행을 삭제하기

🔹 불필요한 RID 컬럼을 삭제하기

🔹 결과를 df_temp 데이터프레임에 저장하기

df_temp = df[df['Speed_Per_Hour'] < 300].drop(columns=['RID'])

 

6. 결측치 처리

🔹 df_temp 데이터프레임에서 결측치를 확인하기

🔹 결측치가 있는 행을 삭제하기

🔹 결과를 df_na 데이터프레임에 저장하기

🔹 결측치의 개수를 답안07 변수에 저장하기

print(df_temp.isna().sum())

df_na = df_temp.dropna()

답안07 = 2

 

7. 불필요한 컬럼 삭제

🔹 df_na 데이터프레임에서 Time_Departure, Time_Arrival 컬럼을 삭제하기

🔹 결과를 df_del 데이터프레임에 저장하기

df_del = df_na.drop(columns=['Time_Departure', 'Time_Arrival'])

 

8. 범주형 변수 전처리

🔹 df_del 데이터프레임에서 object 타입 컬럼을 대상으로 get_dummies()를 활용하여 원-핫 인코딩을 수행하기

🔹 결과를 df_preset 데이터프레임에 저장하기

cols = df_del.select_dtypes(['object']).columns
df_preset = pd.get_dummies(df_del, columns=cols)

 

9. 데이터셋 분리 및 스케일링

🔹 df_preset 데이터프레임에서 train_test_split을 활용하여 Time_Driving을 라벨(y), 나머지를 피처(X)로 설정한 후 훈련셋과 검증셋으로 분리하기

🔸 비율: 80:20, random_state: 42

🔹 RobustScaler를 사용하여 X_train, X_valid에 대해 스케일링을 수행하기

🔸 X_train: fit_transform(), X_valid: transform()

X = df_preset.drop(columns=['Time_Driving'])
y = df_preset['Time_Driving']

from sklearn.model_selection import train_test_split
X_train, X_valid, y_train, y_valid = train_test_split(
    X, y, 
    test_size=0.2, 
    random_state=42
)

from sklearn.preprocessing import RobustScaler
scaler = RobustScaler()
X_train = scaler.fit_transform(X_train)
X_valid = scaler.transform(X_valid)

 

10. 머신러닝 모델 학습

다음 조건에 맞는 머신러닝 모델을 각각 만들고 학습하기

🔹 의사결정나무(Decision Tree)

🔸 max_depth=5, min_samples_split=3, random_state=120

🔸 모델을 dt 변수에 저장하기

🔹 랜덤포레스트(Random Forest)

🔸 max_depth=5, min_samples_split=3, random_state=120

🔸 모델을 rf 변수에 저장하기

🔹 각 모델에 대해 fit() 수행하기

from sklearn.tree import DecisionTreeRegressor
dt = DecisionTreeRegressor(max_depth=5, min_samples_split=3, random_state=120)

from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor(max_depth=5, min_samples_split=3, random_state=120)

dt.fit(X_train, y_train)
rf.fit(X_train, y_train)

 

11. 모델 성능 평가

🔹 의사결정나무 모델로 y값을 예측하여 y_pred_dt 변수에 저장하기

🔹 MAE(Mean Absolute Error)를 구해서 dt_mae 변수에 저장하기

🔹 랜덤포레스트 모델로 y값을 예측하여 y_pred_rf 변수에 저장하기

🔹 MAE(Mean Absolute Error)를 구해서 rf_mae 변수에 저장하기

🔹 가장 성능이 좋은 모델 이름을 '답안12' 변수에 'decisiontree' 또는 'randomforest'로 저장하기

from sklearn.metrics import *

y_pred_dt = dt.predict(X_valid)
dt_mae = mean_absolute_error(y_valid, y_pred_dt)

y_pred_rf = rf.predict(X_valid)
rf_mae = mean_absolute_error(y_valid, y_pred_rf)

답안12 = 'decisiontree' if dt_mae < rf_mae else 'randomforest'

 

12. 딥러닝 모델 설계 및 학습

TensorFlow를 사용해 다음 조건을 만족하는 딥러닝 모델을 설계하고 학습하기

🔹 히든 레이어 2개 이상

🔹 Dropout 비율 0.2 레이어 1개

🔹 손실함수: MSE(Mean Squared Error)

🔹 epochs=30, batch_size=16

🔹 평가 데이터: (x_valid, y_valid)

🔹 학습 기록은 history 변수에 저장하기

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout

model = Sequential([
    Input(shape=(X_train.shape[1],)),
    Dense(64, activation='relu'),
    Dropout(0.2),
    Dense(32, activation='relu'),
    Dense(1)
])

model.compile(optimizer='adam', loss='mse', metrics=['mse'])

history = model.fit(
    X_train, y_train,
    validation_data=(X_valid, y_valid),
    epochs=30,
    batch_size=16,
    verbose=0
)

 

13. 딥러닝 학습 시각화

Matplotlib을 활용하여 딥러닝 모델의 학습 결과를 시각화하기

🔹 학습 및 검증 mse를 하나의 그래프에 표시하기

🔹 범례는 각각 mse, val_mse

🔹 그래프 제목은 'Model MSE', X축은 'Epochs', Y축은 'MSE'

plt.plot(history.history['mse'], label='mse', color='royalblue', linewidth=2)
plt.plot(history.history['val_mse'], label='val_mse', color='tomato', linewidth=2)
plt.title('Model MSE')
plt.xlabel('Epochs')
plt.ylabel('MSE')
plt.legend()
plt.grid(alpha=0.5)
plt.tight_layout()
plt.show()

'KT 에이블스쿨' 카테고리의 다른 글

AICE 대비 2탄  (0) 2025.04.25
에이블스쿨 2주차 회고  (0) 2025.04.07
에이블스쿨 1주차 회고  (0) 2025.04.01
KT 에이블스쿨 7기 AI 트랙 합격 후기  (6) 2025.03.27
'KT 에이블스쿨' 카테고리의 다른 글
  • AICE 대비 2탄
  • 에이블스쿨 2주차 회고
  • 에이블스쿨 1주차 회고
  • KT 에이블스쿨 7기 AI 트랙 합격 후기
토토이
토토이
토토이 님의 블로그 입니다.
  • 토토이
    토토이 님의 블로그
    토토이
    • 분류 전체보기 (18)
      • KT 에이블스쿨 (5)
      • 복습 (1)
      • 자바 (11)
      • 뻐꿈 (0)
  • 태그

    AICE
    java
    스택
    에이블스쿨
    인프런
    자격증
    자바
    취준
    코딩테스트
    코테
    프로그래머스
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
  • hELLO· Designed By정상우.v4.10.3
토토이
AICE 대비 1탄: 샘플 문항 풀어보기
상단으로

티스토리툴바