KT에이블스쿨

[KT AIVLE] 미니프로젝트 5차

qkrgusqls 2024. 5. 27. 22:51
미니프로젝트 5차
0422 - 0423

 

미니프로젝트 5차에는 AICE 대비 모의 시험을 치뤘다. 지금까지 에이블스쿨에서 배운 내용이 시험범위와 일치했다. 6월에 AICE associate가 에이블러용으로 진행된다고 한다. (에이블러들에게 30% 할인 쿠폰이 제공되었다.)

 

AICE associate 출제범위

탐색적 데이터분석
데이터전처리
머신러닝/딥러닝 모델링
모델 성능평가

 

 

 

시험이라고 하니까 괜히 코드짜기가 더 어려워서 당황했다. 그나마 다행인건 AICE 시험이 구글링이 가능하다는 것이었다! 구글링이 안됐다면, 애초에 시험 볼지 말지도 고민했을 것이다 ㅠㅠ

 

패키지 import 코드

import numpy as np
import pandas as pd
!pip install seaborn
import seaborn as sns
import matplotlib.pyplot as plt
import sklearn as sk

 

데이터 전처리

pandas로 데이터프레임을 변환하는 코드를 익혀야한다! 

# CSV 파일에서 데이터프레임 생성
df = pd.read_csv('data.csv')
print(df)

 

value.counts() : 데이터 별 건수를 확인한다.('Name'칼럼)

print(df['Name'].value_counts())

 

fillna() : 결측값을 채운다. 

df = df.fillna(0)  # 결측값을 0으로 채우기

 

drop() : 열이 'B'인 열을 삭제한다.

df = df.drop('B', axis=1)

 

A열의 값이 1보다 큰 값으로 필터링한다.

df[df['A'] > 1]

 

groupby() : 이름 별로 평균 점수를 계산한다.

df.groupby('Name').mean()

 

데이터 분리

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, stratify=y, random_state=42)

 

훈련데이터와 테스트데이터를 분리하는 과정이다. 학습 전에 무조건 테스트셋을 나누기 때문에, 위 코드는 암기해야한다.

 

라벨인코더

cat_cols = df5.select_dtypes(include='object')

from sklearn.preprocessing import LabelEncoder

# LabelEncoder
le = LabelEncoder()
df5[''] = le.fit_transform(cat_cols[''])

 

라벨 인코더는 카테고리형 변수를 숫자형으로 변환하는 대표적인 방법이다. 이를 통해 머신러닝 모델에 데이터를 입력할 수 있다. object형 변수를 숫자 변수로 바꿀 수 있다.

 

원핫인코딩

pd.get_dummies(df['category'])

 

pd.get_dummies() 함수는 'category' 열의 범주형 데이터를 One-Hot Encoding으로 변환한다. 

 

머신러닝 기본코드 

# 필요한 라이브러리 불러오기
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error


# 선형 회귀 모델 학습
lin_reg = LinearRegression()
lin_reg.fit(X_train, y_train)

# 테스트 세트로 예측
y_pred = lin_reg.predict(X_test)

# 모델 평가
mse = mean_squared_error(y_test, y_pred)
print('Mean Squared Error:', mse)

 

딥러닝 기본코드

# 여기에 답안코드를 작성하세요.
model = Sequential([
    Dense(64, activation='relu', input_shape=(X_train.shape[1],)),
    Dropout(0.2),
    Dense(32, activation='relu'),
    Dense(1, activation='sigmoid')
])

es = EarlyStopping(monitor='val_loss', patience=5) 

checkpoint_path = 'best_model.keras'
mc = ModelCheckpoint(checkpoint_path, monitor='val_loss', verbose=1, save_best_only=True)

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


history = model.fit(X_train, y_train,
                    epochs=30,
                    batch_size=16,
                    callbacks=[es,mc],
                    validation_data=(X_valid, y_valid))

 

 

성능평가

plt.plot(history.history['loss'], label='mse')
plt.plot(history.history['val_loss'], label='val_mse')
plt.title('Model MSE')
plt.xlabel('Epochs')
plt.ylabel('MSE')
plt.legend()
plt.show()

 

손실함수를 그려보는 그래프이다. mse(mean_squared_error)

val_loss의 값이 너무 커서 그런지 시각화가 잘 안됐다.. ㅜㅠ


 

많이 부족하지만 내가 헷갈리거나 꼭 알아야한다고 생각하는 코드들 위주로 정리해보았다. 기출문제를 확인하면서 여러번 풀어봐야 시험에 무난히 통과할 수 있을 것 같다.