카테고리 없음
AICE Associate 자격증 준비 - 1
주녕콩
2025. 5. 28. 02:13
3. 모델링을 위해 본 과제는 2개의 데이터 파일을 읽어오려고 합니다.
Pandas를 사용해서 2개의 데이터 파일을 읽고 병합한 뒤, 기계이름(machine_name)에 해당하는 코드를 작성하세요.
- 4000TT.csv 파일을 읽어온 데이터프레임 변수명을 df_4000TT로 설정하세요.
- input.csv 파일을 읽어온 데이터프레임 변수명을 df_input으로 설정하세요.
- 기계이름(machine_name)을 기준으로 두 데이터프레임을 병합하세요.
- 입력값(input) 컬럼만 추출한 데이터프레임 변수명을 infoDF로 저장하세요.
4. Address(주소)에서 행정동만 추출한 분포표를 만들고자 합니다.
Address(주소)에서 행정동만 추출하여 countplot으로 표현하는 코드 완성을 작성하세요.
- Seaborn을 활용하세요.
- 주소(Address)에서 행정동만 추출하여 새로운 컬럼을 생성하세요.
- 새로 생성된 행정동 컬럼의 value_counts() 값을 확인해보세요.
- countplot을 활용하여 행정동 분포를 시각화하세요.
- 시각화된 x축은 ‘행정동’, y축은 ‘빈도수’가 출력되도록 하세요.
5. 주행시간과 평균속도의 분포를 같이 확인하고자 합니다.
Time_Driving(주행시간)과 Speed_Per_Hour(평균속도)를 infoDF로부터 그래프로 출력하세요.
- Seaborn을 활용하세요.
- 각각의 Time_Driving(주행시간)과 Speed_Per_Hour(평균속도)를 infoDF로부터 그래프로 출력하세요.
6. 위의 infoDF 그래프에서 속도 300이 넘는 이상치를 발견할 수 있습니다.
가이드에 따라서 전처리를 수행하고 조정하세요.
- 이상 데이터를 확인하고 처리하세요.
- infoDF 데이터프레임 중 Speed_Per_Hour 값이 300 이상인 데이터를 확인하세요.
- 조건에 맞는 데이터를 제거하거나 다른 값으로 조정하세요.
- 처리한 데이터를 infoDF에 반영하세요.
- 조건을 활용한 데이터 전처리를 수행하세요. (예: drop, np.where 등)
7. 모델 성능을 제대로 내기 위해서 특정 값만 추출처리할 필요가 있습니다.
아래 가이드를 따라 값을 추출 처리하세요.
- Speed_Per_Hour 값이 10 이상이고 300 이하인 경우만 추출하세요.
- Time_Driving 값이 1 이상이고 1000 이하인 경우만 추출하세요.
- 두 조건을 모두 만족하는 데이터를 추출하세요.
- 조건에 맞는 데이터를 infoDF에 반영하세요.
- Pandas를 활용한 조건 필터링을 사용하세요.
8. 모델 성능 향상을 위해 수치형 정규화를 수행하고자 합니다.
- 수치형 변수(Speed_Per_Hour, Time_Driving)에 대해 정규화를 수행하세요.
- 정규화를 수행한 값을 새로운 컬럼으로 추가하세요.
- 정규화 방법은 자유롭게 선택하세요. (예: MinMax, Standard 등)
9. 원-핫 인코딩(One-hot encoding)은 문자열 변수를 각 열이진행렬로 변환하기 위해 사용됩니다.
원-핫 인코딩으로 아래 조건에 해당하는 컬럼 데이터를 변환하세요.
- Address 컬럼을 활용하세요.
- Address 컬럼에서 행정동 데이터를 기반으로 변환하세요.
- pd.get_dummies() 함수를 활용하세요.
- 변환된 데이터는 infoDF에 반영하세요.
10. 훈련과 검증 단계에 사용할 데이터를 분리하고자 합니다.
Time_Driving(주행시간) 컬럼을 label(y)로 나머지 컬럼을 feature(X)로 분할한 후 훈련데이터와 검증데이터로 분할하고자 합니다.
추가로 가이드에 따라서 훈련데이터와 검증데이터에 스케일링을 수행하세요.
- 전체 infoDF 데이터를 활용
- target 컬럼은 Time_Driving, 관련 데이터셋은 label = y
- 나머지 컬럼은 X로 정의하여 feature X 구성
- train_test_split을 활용하여 훈련(80%) 검증(20%) 데이터 분할
- RandomState는 42로 설정
- Scaler는 StandardScaler를 사용
- 훈련데이터와 검증데이터에 각각 X_train, X_test에 스케일링 적용
- Scaled 데이터프레임은 DataScaled라는 이름으로 구성하여 X_scaled, y_scaled 컬럼 생성
11. Time_Driving(주행시간)을 예측하는 머신러닝 모델을 만들고자 합니다.
의사결정나무(decision tree)와 랜덤포레스트(random forest)는 여러 가지 규칙을 수학적으로 결정하면서
독립 변수 값을 활용하는 모델으로 분류(classification)와 회귀(regression)에 모두 사용될 수 있습니다.
아래 가이드에 따라 의사결정나무(decision tree)와 랜덤포레스트(random forest) 모델을 구축하고 예측을 수행하세요.
- 전체 데이터프레임 infoDF를 활용
- 타겟 값은 Time_Driving 컬럼
- 모델 학습 데이터와 검증 데이터를 분리(train_test_split, 80:20 비율)
- 모델은 DecisionTreeRegressor, RandomForestRegressor 사용
- 모델 성능은 RMSE(Root Mean Squared Error)로 평가
- 예측된 결과를 시각화 (실제값 y_test, 예측값 y_pred 그래프 비교)
- 최종적으로 RMSE 값과 예측 시각화 결과를 출력하세요.
12. 위의 의사결정나무(decision tree)와 랜덤포레스트(random forest) 모델 성능을 평가하고자 합니다.
아래 가이드에 따라 예측 결과의 mae(Mean Absolute Error) 값을 구하고 평가하세요.
- 예측값을 활용하여 성능을 평가하세요.
- 타겟 값은 Time_Driving, 예측 결과는 y_pred로 저장하세요.
- 실제 값(y_test)과 예측 값(y_pred) 간의 차이를 비교하세요.
- 회귀 성능 지표로 MAE(Mean Absolute Error)를 사용하세요.
- sklearn.metrics에서 mean_absolute_error 함수를 임포트하여 사용하세요.
- 의사결정나무 모델(decision tree)와 랜덤포레스트 모델(random forest)의 MAE를 각각 출력하고 비교하세요.
- 비교한 결과를 기반으로 어떤 모델이 더 나은지 해석해보세요.
13. Time_Driving(주행시간)을 예측하는 딥러닝 모델을 만들고자 합니다.
아래 가이드에 따라 모델을 만들고 학습을 진행하세요.
- Tensorflow(Keras)를 사용하여 딥러닝 모델을 생성하세요.
- 입력층(Input), 은닉층(Hidden), 출력층(Output)을 구성하세요.
- 모델 손실 함수(loss)는 mae를 사용하세요.
- 모델 평가지표(metrics)는 mae, mse를 사용하세요.
- 최적화 도구(optimizer)는 adam을 사용하세요.
- fit() 함수를 활용하여 학습을 수행하세요.
- 학습 이력을 history 변수에 저장하세요.
- 학습 결과를 시각화하여 출력하세요. (loss, mae 시각화)
14. 위 딥러닝 모델의 성능을 평가하고자 합니다.
Matplotlib 라이브러리를 활용해서 학습 mse와 검증 mse를 그래프로 표현하세요.
- 학습 시의 그래프에서 학습 mse, 검증 mse는 2가지 선으로 모두 표현하세요.
- 그래프의 y축은 MSE로 설정하세요.
- x축은 Epochs라고 표시하고, x축에는 MSE값의 추이를 표현하세요.