2 유형 분석 순서
- 라이브러리 및 데이터 확인
- 데이터 탐색(EDA)
- 데이터타입, 결측치, 기초통계량 등
- 데이터 전처리 및 분리
- 결측치/이상치: 대체 or 삭제
- 변수처리
- 모델링 및 성능 평가
- 분류: RandomForestClassifier
- Accuracy, F1 score
- 회귀: RandomForestRegressor
- R2, MSE, RMSE
- 분류: RandomForestClassifier
- 예측값 제출
2. 데이터 탐색(EDA)
명령어 | 설명 |
---|---|
.shape | 데이터의 행과 열의 수를 확인 |
.head() | 데이터의 처음 몇 줄(기본적으로 5줄)을 보여줌 |
.info() | 각 변수의 데이터 타입과 결측치 여부를 확인 |
.describe() | 데이터의 기초 통계량(평균, 최소값, 최대값 등) 확인 |
.value_counts() | 각 변수의 고유값들의 빈도수를 확인 |
3. 데이터 전처리 및 분리(결측치, 이상치, 변수 처리)
명령어 | 설명 |
---|---|
.isnull().sum() | 결측치의 갯수 확인 |
.dropna() | 결측치가 있는 행 또는 열을 제거 |
.fillna() | 결측치를 특정 값으로 대체 (예: 중앙값(median), 평균(mean), 최빈값(mode)) |
np.where() | 조건에 따라 값을 대체 |
df.drop(columns=['col1', 'col2']) | 지정된 열을 제거 |
pd.get_dummies() | 범주형 변수를 원-핫 인코딩으로 변환 |
x_train = x_train.reindex(columns=x_test.columns, fill_value=0) | 원핫인코딩 후 변수의 수가 다른 경우(x_test의 변수가 x_train보다 많은 경우) |
4. 모델링 및 성능 평가
주요 라이브러리:
| 분류 | 라이브러리 | |——|————| | 전처리 | from sklearn.model_selection import train_test_split
| | 모델(분류) | from sklearn.ensemble import RandomForestClassifier
| | 모델(회귀) | from sklearn.ensemble import RandomForestRegressor
| | 성능평가(분류) | from sklearn.metrics import accuracy_score, f1_score, recall_score, precision_score, roc_auc_score, confusion_matrix
| | 성능평가(회귀) | from sklearn.metrics import mean_squared_error, r2_score
|
순서:
단계 | 설명 |
---|---|
1. train, test, val로 split | x_train, x_val, y_train, y_val = train_test_split(x_train, y_train['target'], stratify=y_train['target'], random_state=2023, test_size=0.2) |
2. model 호출, fit | model = RandomForestClassifier() model.fit(x_train, y_train) |
3. val predict | y_pred = model.predict(x_val) |
4. 성능평가(분류) | acc = accuracy_score(y_val, y_pred) f1 = f1_score(y_val, y_pred, average='macro') print(acc, f1) |
4. 성능평가(회귀) | mse = mean_squared_error(y_val, y_pred) r2 = r2_score(y_val, y_pred) |
5. test predict | y_result = model.predict(x_test) y_result_prob = model.predict_proba(x_test) : 특정 클래스로 분류될 확률을 구할 경우 |
6. 결과 제출 | pd.DataFrame({'pred': y_result, 'prob_0': y_result_prob[:0], 'prob_1':y_result_prob[:1], 'prob_2':y_result_prob[:2] }).to_csv('수험번호.csv', index=False) result = pd.read_csv('수험번호.csv') print(result) |
추가 노트:
모델링 및 평가
분석모형 평가_분류 성능
- 정확도(Accuracy): 전체 중에서 올바르게 예측한 비율
- 공식:\(\frac{(TP + TN)}{(TP + TN + FP + FN)}\)
- 민감도(Sensitivity) 또는 재현율(Recall): 실제 양성 샘플 중 올바르게 예측된 샘플의 비율
- 공식: \(\frac{TP}{(TP + FN)}\)
- 특이도(Specificity) 또는 진짜 음성 비율(True Negative Rate): 실제 음성 샘플 중 올바르게 예측된 샘플의 비율
- 공식: \(\frac{TN}{(TN + FP)}\)
- 정밀도(Precision) 또는 양성 예측 값(Positive Predictive Value): 양성으로 예측된 샘플 중 실제로 양성인 샘플의 비율
- 공식: \(\frac{TP}{(TP + FP)}\)
- F1 점수(F1 Score): 정밀도와 재현율(Recall)의 조화 평균
- 공식: \(2 \times \frac{(Precision \times Recall)}{(Precision + Recall)}\)
- 여기서 Precision은 정밀도, Recall은 민감도를 의미함