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 |