10주차 5차 미니프로젝트

정지원·2024년 5월 1일
0

에이블 스쿨 복습

목록 보기
40/51
post-thumbnail

AICE ASOCIATE

소개

  • AICE는 인공지능 능력시험입니다. (AI 자격증)
    영어 능력을 평가하는 토익처럼, AICE는 인공지능 활용능력을 평가합니다.
    KT가 개발했고, 한국경제와 함께 주관합니다.
  • 실무에서 가장 많이 쓰는 Tabular 데이터에 대해
    파이썬 기반으로 데이터 분석 / 처리 / 모델링을 수행합니다.
  • AICE 출제범위
    • 탐색적 데이터 분석
      필요한 라이브러리 설치 / Tabular 데이터 로딩 / 데이터의 구성 확인, 상관분석 / 데이터 시각화
    • 데이터 전처리
      데이터 결측치 처리 / 라벨 인코딩, 원핫 인코딩 / x,y 데이터 분리 / 데이터 정규분포화, 표준화
    • 머신러닝 / 딥러닝 모델링
      scikit-learn, TensorFlow 등을 활용하여 문제에 제시된 예측, 분류를 위해 머신러닝, 딥러닝 모델링
    • 모델 성능평가
      모델 성능평가 및 그래프 출력

진행 과정

AICE ASSOCIATE 시험 대비하여 5차 미니 프로젝트를 2일동안 진행했습니다.

총 3개의 데이터를 개별적으로 과제를 수행한 후, 조별로 토론을 해보는 시간을 가졌습니다.

주제는
1. VOC를 제기한 고객의 해지 여부 예측 문제
2. 통신 서비스 이용 고객의 이탈여부 예측 문제
3. 네비게이션 주행데이터를 이용한 도착시각 예측 문제
(추가 자료)
4. 악성사이트 탐지 머신러닝 모델 개발

이 주제로 각각 데이터 전처리 부터 머신러닝, 딥러닝, 모델 성능평가를 진행했습니다.

이때까지 배운 내용을 수행하면서 나의 실력을 측정해볼 수 있는 좋은 기회라 생각했습니다.

5차 미니프로젝트 덕분에 부족한 점을 찾아서 AICE 자격증 시험을 합격하도록 하겠습니다.

헷갈린 코드

# df1의 데이터프레임에 '변수1'에 '_' 값이 몇 개가 있는지 확인
(df1['변수1'] == '_').count()

# 강사 코드
count = (df1['변수1'] == '_').sum()
print(count)
# df1의 '_'의 값을 null 값으로 변경하고 df2에 저장
df2 = df1.replace('_', None)

# 강사 코드
df2 = df1.replace('_', np.nan)
# 1. df2에 '변수2' 컬럼의 최빈값을 확인하는 코드로 확인
# 2. '변수2' null 값을 최빈값으로 변경하고 df3에 저장
df3 = df2.copy()
df3['변수2'] = df3['변수2'].fillna(df3['변수2'].mode()[0])


## 강사코드
# 1. df2에 '변수2' 컬럼의 최빈값을 확인하는 코드로 확인
df2['변수2'].mode()

# 2. '변수2' null 값을 최빈값으로 변경하고 df3에 저장
df2['변수2'].fillna('L', inplace = True)

# 3. df3에 저장
df3 = df2
# df3에 대해 '변수3'의 null 값을 중앙값으로 변경
# 데이터 타입을 정수로 변경 후 df4에 저장
df4 = df3.copy()
df4['변수3'] = df4['변수3'].fillna(df4['변수3'].median().astype(int))
df4['변수3'].median()

# 강사 코드
df3['변수3'].fillna(df3['변수3'].median(), inplace = True)
df4 = df3.astype({'변수3': 'int'})

```python
# 모델의 성능 평가
from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report

# y값을 예측하고
y_pred = LR.predict(X_test)

# confusion matrix구하고 heatmap 그래프로 시각화
cm = confusion_matrix(y_test, y_pred)
sns.heatmap(cm, annot = True)

# classification_report 활용
print(classification_report(y_test, y_pred))
# 모델 성능을 평가해서 그래프로 표현
plt.figure(figsize=(10,5))

# 학습 정확도와 검증정확도를 그래프로 표시
plt.plot(history.history['acc'])
plt.plot(history.history['val_acc'])
plt.title('Model Accuracy')

# xlabel에는 epochs, ylabel에는 accuracy
plt.xlabel('Epochs')
plt.ylabel('Accuracy')

# 범례에는 train, validation으로 표시
plt.legend(['Train','Validation'], loc='lower right')
# 학습 손실과 검증 손실을 그래프로 표시
# xlabel에는 Epochs, ylabel에는 Loss 
plt.figure(figsize=(10,5))
plt.plot(history.history['loss'], 'b', label='Train Loss')
plt.plot(history.history['val_loss'], 'y', label='validaton Loss')

# 범례에는 Train Loss와 Validation Loss로 표시
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()
# y값을 예측하여 y_test_pred에 저장하고 정확도를 출력
y_test_pred = model.predict(X_test, batch_size=10, verbose=1)

y_test = np.argmax(y_test_ohe, axis=1)
y_test_pred = np.argmax(y_test_pred, axis=1)

from sklearn.metrics import accuracy_score
accuracy_score(y_test, y_test_pred)
profile
뒤늦게 프로그래밍을 시작한 응애

0개의 댓글