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()