KT에이블스쿨
[KT AIVLE] AICE 대비 샘플 문항 정리
qkrgusqls
2024. 6. 20. 22:36
AICE 시험을 코앞에 두고 샘플 문항코드를 정리했다.
실제 AICE 시험에서는 GPT 사용이 안되고, 오로지 구글링만 된다! 제시된 가이드를 잘 읽고 풀어야겠다.
범위는 AIVLE에서 배웠던 머신러닝과 딥러닝이고 기본적인 모델링 과정을 잘 알아야 할 것 같다.
전처리
결측치 처리
# 각 열의 중앙값 계산
medians = df.median()
# 각 열의 평균값 계산
means = df.mean()
# 중앙값으로 결측치 채우기
df_filled = df.fillna(medians)
# 평균값으로 결측치 채우기
df_filled = df.fillna(means)
df.fillna(method='bfill')
# 전 값으로 채우기
f.fillna(method='ffill')
원핫인코딩
# 범주형 변수를 더미 변수로 변환합니다
df_del_dummies = pd.get_dummies(df_del, columns=['Category'])
columns를 지정하지 않아도 된다.
모델링
import pandas as pd
import tensorflow as tf
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import RobustScaler
import matplotlib.pyplot as plt
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint
# 타겟 변수 설정
target = 'Time_Driving'
# 특성 변수와 타겟 변수 분리
X = df_preset.drop(columns=[target])
y = df_preset[target]
# 데이터셋을 학습 세트와 검증 세트로 나눕니다
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# RobustScaler를 사용하여 학습 세트와 검증 세트를 스케일링
scaler = RobustScaler()
# 학습 세트에 맞춰 스케일러를 학습하고 변환
X_train_scaled = scaler.fit_transform(X_train)
# 검증 세트는 학습된 스케일러를 사용하여 변환
X_test_scaled = scaler.transform(X_test)
# 모델 구성
input_dim = X_train_scaled.shape[1]
output_dim = 1 # 이진 분류
model = Sequential()
model.add(Dense(64, activation='relu', input_shape=(input_dim,)))
model.add(Dropout(0.25))
model.add(Dense(output_dim, activation='sigmoid')) # 이진 분류의 경우 sigmoid 사용
# 조기 종료와 모델 체크포인트 설정
es = EarlyStopping(monitor='val_loss', patience=5, mode='min', verbose=1)
ms = ModelCheckpoint('my_checkpoint.ckpt', monitor='val_loss', mode='min', verbose=1, save_weights_only=True, save_best_only=True)
# 모델 컴파일
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) # 이진 분류의 경우
# 모델 학습
history = model.fit(
X_train_scaled, y_train,
epochs=30, # 예제 값을 사용
batch_size=16, # 예제 값을 사용
validation_data=(X_test_scaled, y_test),
callbacks=[es, ms],
verbose=True
).history
# 모델 요약
model.summary()
# 학습 결과 출력
plt.figure(figsize=(10, 6))
# 손실 그래프
plt.plot(history['loss'], label='Train Loss')
plt.plot(history['val_loss'], label='Validation Loss')
plt.title('Model Loss')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()
plt.show()
# 정확도 그래프
plt.figure(figsize=(10, 6))
plt.plot(history['accuracy'], label='Train Accuracy')
plt.plot(history['val_accuracy'], label='Validation Accuracy')
plt.title('Model Accuracy')
plt.xlabel('Epochs')
plt.ylabel('Accuracy')
plt.legend()
plt.show()