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

2025년 04월·KT 에이블스쿨
목차
  1. 1. 기초 라이브러리 로드
  2. 2. 데이터 불러오기 및 병합
  3. 3. 범주형 변수 시각화 및 정제
  4. 4. 수치형 변수 시각화 및 이상치 탐지
  5. 5. 이상치 제거 및 컬럼 정제
  6. 6. 결측치 처리
  7. 7. 불필요한 컬럼 삭제
  8. 8. 범주형 변수 전처리
  9. 9. 데이터셋 분리 및 스케일링
  10. 10. 머신러닝 모델 학습
  11. 11. 모델 성능 평가
  12. 12. 딥러닝 모델 설계 및 학습
  13. 13. 딥러닝 학습 시각화

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
  1. 1. 기초 라이브러리 로드
  2. 2. 데이터 불러오기 및 병합
  3. 3. 범주형 변수 시각화 및 정제
  4. 4. 수치형 변수 시각화 및 이상치 탐지
  5. 5. 이상치 제거 및 컬럼 정제
  6. 6. 결측치 처리
  7. 7. 불필요한 컬럼 삭제
  8. 8. 범주형 변수 전처리
  9. 9. 데이터셋 분리 및 스케일링
  10. 10. 머신러닝 모델 학습
  11. 11. 모델 성능 평가
  12. 12. 딥러닝 모델 설계 및 학습
  13. 13. 딥러닝 학습 시각화
'KT 에이블스쿨' 카테고리의 다른 글
  • AICE 대비 2탄
  • 에이블스쿨 2주차 회고
  • 에이블스쿨 1주차 회고
  • KT 에이블스쿨 7기 AI 트랙 합격 후기
토토이
토토이
토토이 님의 블로그 입니다.
  • 토토이
    토토이 님의 블로그
    토토이
    • 분류 전체보기 (18)
      • KT 에이블스쿨 (5)
      • 복습 (1)
      • 자바 (11)
      • 뻐꿈 (0)
  • 태그

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

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

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.