열정적인 하루

Aice Associate 시험 예제 및 데이터셋 본문

IT

Aice Associate 시험 예제 및 데이터셋

열정샷 2025. 10. 16. 13:48

# AiceAssociate 모의고사 문제

##
데이터셋 정보

**
파일명**: customer_data.csv 

customer_data.csv
0.06MB



**
데이터 설명**: 고객 쇼핑몰 이용 데이터 (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 변수에 저장하시오.

---

##
제출 안내

모든 코드를 순서대로 실행하여 결과를 확인하시오.
각 문제에서 요구하는 변수명을 정확히 사용하시오.
 

 

답안:

AiceAssociate_모의고사_답안.txt
0.01MB