| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- 배경화면 #수험생 #공부
- 무설치 #할일관리 #로컬PC용
- LLM #Langchain
- Aice #Associate #자격증
- associate #aice
- AIPOT #AI프롬프트활용능력 #AIPOT1급 #한국생산성본부 #영진닷컴 #이기적스터디카페 #AI자격증 #합격후기 #91점합격
- Today
- Total
열정적인 하루
Aice Associate 시험 예제 및 데이터셋 본문
# AiceAssociate 모의고사 문제
## 데이터셋 정보
**파일명**: customer_data.csv
**데이터 설명**: 고객 쇼핑몰 이용 데이터 (1000건)
**컬럼 설명**:
- CustomerID: 고객 ID
- Age: 고객 나이
- Gender: 성별 (Male, Female, -)
- City: 거주 도시 (Seoul, Busan, Incheon, Daegu, Gwangju, -)
- MembershipLevel: 회원 등급 (Bronze, Silver, Gold, Platinum)
- MonthlySpending: 월 평균 지출액 (원)
- VisitFrequency: 월 방문 횟수
- ProductCategory: 주 구매 카테고리
- SatisfactionScore: 만족도 점수 (1-5점)
- PurchaseAmount: 최근 구매 금액 (원)
- Discount: 할인율 (%)
- ChurnStatus: 이탈 여부 (0: 유지, 1: 이탈)
---
## 문제 1. 데이터 분석 - 도시별 분포 조사 (15점)
**대상 데이터프레임**: df
다음 작업을 수행하시오:
1. Seaborn 라이브러리를 활용하여 City(도시) 컬럼에 대한 countplot 그래프를 그리시오.
2. 각 도시별 평균 MonthlySpending(월 평균 지출액)을 계산하여 출력하시오. (groupby 활용)
3. City 컬럼에서 도시명이 없는 '-' 에 해당되는 row(행)을 삭제하고, 삭제된 행의 개수를 city_deleted_count 변수에 저장하시오.
---
## 문제 2. 데이터 분석 - 상관관계 분석 (15점)
**대상 데이터프레임**: df
특정 컬럼들 간의 상관관계를 파악하고 시각화하시오.
**코드**:
```python
# 빈칸을 채우고 코드를 실행하세요
column_list = ['Age', 'MonthlySpending', 'VisitFrequency', 'SatisfactionScore', 'PurchaseAmount', 'Discount']
# 상관계수 계산
correlation_matrix = df[column_list].<blank1>()
# 히트맵 시각화
import seaborn as sns
import matplotlib.pyplot as plt
sns.<blank2>(correlation_matrix, annot=True, cmap='coolwarm', fmt='.2f')
plt.title('Correlation Heatmap')
plt.show()
```
**질문**:
1. `<blank1>` 에 들어갈 함수명을 답안02_1 변수에 저장하시오. 예) 답안02_1 = '함수명'
2. `<blank2>` 에 들어갈 함수명을 답안02_2 변수에 저장하시오. 예) 답안02_2 = '함수명'
3. 위 코드를 완성하여 실행하시오.
---
## 문제 3. 데이터 전처리 - 결측치 처리 (15점)
**대상 데이터프레임**: df
다음 작업을 수행하시오:
1. 전체 데이터프레임에서 결측치 개수를 컬럼별로 확인하고 출력하시오.
2. Age 컬럼의 결측치를 Age 컬럼의 평균값(mean)으로 대체하시오.
3. SatisfactionScore 컬럼의 결측치를 SatisfactionScore 컬럼의 중앙값(median)으로 대체하시오.
4. 전처리가 완료된 데이터프레임을 df_clean 변수에 저장하시오.
---
## 문제 4. 데이터 전처리 - 인코딩 (20점)
**대상 데이터프레임**: df_clean
다음 작업을 수행하시오:
1. Gender, City, MembershipLevel, ProductCategory 컬럼에 대해 LabelEncoder를 사용하여 라벨 인코딩을 수행하시오.
- sklearn.preprocessing의 LabelEncoder를 활용하시오.
- 각 컬럼에 대해 fit_transform을 사용하시오.
- 인코딩된 결과를 df_encoded 데이터프레임에 저장하시오.
2. ChurnStatus(이탈 여부)를 예측하는 분류 모델을 위해 to_categorical을 사용하여 원-핫 인코딩을 수행하시오.
- tensorflow.keras.utils의 to_categorical을 활용하시오.
- ChurnStatus 컬럼을 y_categorical 변수에 저장하시오.
---
## 문제 5. 데이터 분리 및 스케일링 (15점)
**대상 데이터프레임**: df_encoded
ChurnStatus(이탈 여부)를 예측하는 모델을 만들기 위해 다음 작업을 수행하시오:
1. ChurnStatus를 제외한 수치형 컬럼들을 X로, ChurnStatus를 y로 분리하시오.
- X에 포함될 컬럼: CustomerID, Age, MonthlySpending, VisitFrequency, SatisfactionScore, PurchaseAmount, Discount, Gender, City, MembershipLevel, ProductCategory (인코딩된 컬럼들)
2. train_test_split을 사용하여 학습 데이터와 테스트 데이터로 분리하시오.
- test_size: 0.2
- random_state: 42
- stratify: y (클래스 비율 유지)
- 결과 변수명: X_train, X_test, y_train, y_test
3. StandardScaler를 사용하여 X_train과 X_test를 표준화하시오.
- sklearn.preprocessing의 StandardScaler를 활용하시오.
- 스케일러는 X_train으로 fit하고, X_train과 X_test 모두 transform하시오.
- 결과 변수명: X_train_scaled, X_test_scaled
---
## 문제 6. 머신러닝 모델링 (25점)
ChurnStatus(이탈 여부)를 예측하는 머신러닝 모델을 구축하시오.
### 6-1. Decision Tree 모델
- max_depth: 8
- min_samples_split: 5
- min_samples_leaf: 3
- random_state: 42
- 모델을 dt_model 변수에 저장하시오.
- X_train_scaled, y_train으로 모델을 학습시키시오.
### 6-2. Random Forest 모델
- n_estimators: 100
- max_depth: 8
- min_samples_split: 5
- min_samples_leaf: 3
- random_state: 42
- 모델을 rf_model 변수에 저장하시오.
- X_train_scaled, y_train으로 모델을 학습시키시오.
### 6-3. 모델 성능 평가
1. 두 모델 각각에 대해 테스트 데이터(X_test_scaled)로 예측을 수행하고, 결과를 dt_pred, rf_pred 변수에 저장하시오.
2. sklearn.metrics의 classification_report를 사용하여 각 모델의 성능을 출력하시오.
3. sklearn.metrics의 confusion_matrix를 사용하여 Random Forest 모델의 혼동 행렬을 계산하고, rf_cm 변수에 저장하시오.
4. Seaborn의 heatmap을 사용하여 Random Forest 모델의 혼동 행렬을 시각화하시오. (annot=True, fmt='d', cmap='Blues' 옵션 사용)
---
## 문제 7. 딥러닝 모델링 (30점)
TensorFlow/Keras를 사용하여 ChurnStatus(이탈 여부)를 예측하는 딥러닝 모델을 구축하시오.
### 7-1. 데이터 준비
- y_train과 y_test를 to_categorical을 사용하여 원-핫 인코딩하시오.
- 결과 변수명: y_train_cat, y_test_cat
### 7-2. 모델 구조
다음 구조로 Sequential 모델을 구축하시오:
**Layer 1 (Input + Hidden)**
- Dense layer: 64 units
- activation: 'relu'
- input_shape: X_train_scaled의 feature 개수
**Layer 2 (Hidden)**
- Dense layer: 32 units
- activation: 'selu'
**Layer 3 (Hidden)**
- Dense layer: 16 units
- activation: 'selu'
**Layer 4 (Output)**
- Dense layer: 2 units (이진 분류)
- activation: 'softmax'
모델을 dl_model 변수에 저장하시오.
### 7-3. 콜백 설정
**EarlyStopping**
- monitor: 'val_loss'
- patience: 12
- restore_best_weights: True
- 변수명: early_stop
**ModelCheckpoint**
- filepath: 'best_model.h5'
- monitor: 'val_accuracy'
- save_best_only: True
- 변수명: checkpoint
### 7-4. 모델 컴파일 및 학습
- optimizer: 'adam'
- loss: 'categorical_crossentropy'
- metrics: ['accuracy']
학습 조건:
- epochs: 100
- batch_size: 64
- validation_data: (X_test_scaled, y_test_cat)
- callbacks: [early_stop, checkpoint]
- 학습 결과를 history 변수에 저장하시오.
---
## 문제 8. 딥러닝 모델 성능 평가 및 시각화 (20점)
### 8-1. 학습 곡선 시각화
Matplotlib를 사용하여 다음 그래프를 그리시오:
**그래프 1**: Accuracy 그래프
- 1개의 그래프에 학습 accuracy와 검증 accuracy를 모두 표시
- 범례: 'Training Accuracy', 'Validation Accuracy'
- 타이틀: 'Model Accuracy'
- X축: 'Epochs'
- Y축: 'Accuracy'
**그래프 2**: Loss 그래프
- 1개의 그래프에 학습 loss와 검증 loss를 모두 표시
- 범례: 'Training Loss', 'Validation Loss'
- 타이틀: 'Model Loss'
- X축: 'Epochs'
- Y축: 'Loss'
### 8-2. 최적 모델 로드 및 평가
1. load_model을 사용하여 저장된 'best_model.h5'를 로드하고 loaded_model 변수에 저장하시오.
2. loaded_model을 사용하여 X_test_scaled에 대한 예측을 수행하고, 결과를 dl_pred_prob 변수에 저장하시오.
3. 예측 확률에서 가장 높은 클래스를 선택하여 dl_pred 변수에 저장하시오. (argmax 사용)
4. 실제 y_test와 dl_pred를 비교하여 confusion_matrix를 계산하고, dl_cm 변수에 저장하시오.
5. classification_report를 사용하여 성능을 출력하시오.
6. classification_report에서 클래스 1(이탈 고객)의 Recall 값을 추출하여 recall_class1 변수에 저장하시오.
---
## 제출 안내
모든 코드를 순서대로 실행하여 결과를 확인하시오.
각 문제에서 요구하는 변수명을 정확히 사용하시오.
답안:
'IT' 카테고리의 다른 글
| LLM 시작을 위한 Langchain 무료 입문 가이드 (2) | 2026.04.19 |
|---|---|
| Aice Associate 모의고사 #2 데이터셋 제공, 정답 제공 (1) | 2025.10.17 |
| 비데·정수기 해지 예측 데이터셋 (0) | 2025.10.14 |
| Aice Associate 준비 인코딩 방법 정리 (0) | 2025.10.12 |
| Aice Associate BASIC 듀얼모니터 사용가능? 준비사항 체크 (부정행위 기준) (0) | 2025.10.11 |