티스토리 뷰
안녕하세요! 오늘은 로지스틱 회귀를 사용한 이진 분류 모델 학습과 평가에 대해 알아보겠습니다. 로지스틱 회귀는 분류 문제에 사용되는 간단하면서도 효과적인 기법입니다. 이 포스트에서는 scikit-learn 라이브러리를 사용하여 로지스틱 회귀 모델을 학습하고, 혼동 행렬(confusion matrix)을 시각화하여 모델의 성능을 평가하는 방법을 소개합니다.
먼저 필요한 라이브러리를 가져옵니다.
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import plot_confusion_matrix
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
이진 분류 문제를 위한 데이터셋을 생성합니다. 이 예제에서는 scikit-learn의 make_classification 함수를 사용하여 1000개의 샘플과 4개의 특성을 가진 데이터셋을 생성합니다.
X, y = make_classification(n_samples=1000, n_features=4, n_classes=2, random_state=123)
데이터를 훈련 세트와 테스트 세트로 분할합니다. 이 예제에서는 80%의 데이터를 훈련에 사용하고, 나머지 20%를 모델 평가에 사용합니다.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=123)
로지스틱 회귀 모델을 생성하고 훈련 세트로 학습시킵니다.
clf = LogisticRegression()
clf.fit(X_train, y_train)
모델이 학습되었으므로, 혼동 행렬을 사용하여 모델의 성능을 평가합니다. 혼동 행렬은 분류 모델의 성능을 평가하는 데 사용되는 행렬로, 실제 레이블과 예측 레이블 간의 관계를 나타냅니다. 이를 통해 모델이 정확하게 예측한 샘플 수와 잘못 예측한 샘플 수를 쉽게 파악할 수 있습니다.
confmat = plot_confusion_matrix(clf, X_test, y_test, cmap="Blues")
plt.show()

이제 혼동 행렬이 시각화되어 모델의 성능을 확인할 수 있습니다. 혼동 행렬의 대각선 요소는 정확한 예측을 나타내며, 비대각선 요소는 잘못된 예측을 나타냅니다. 이를 통해 True Positive (TP), True Negative (TN), False Positive (FP), False Negative (FN) 값을 확인할 수 있으며, 이 값들을 사용하여 다양한 평가 지표를 계산할 수 있습니다.
예를 들어, 정확도(Accuracy), 정밀도(Precision), 재현율(Recall), F1 스코어 등의 평가 지표를 사용하여 모델의 성능을 좀 더 상세하게 평가할 수 있습니다.
이러한 지표들은 다음과 같은 공식으로 계산됩니다:
- 정확도 (Accuracy) = (TP + TN) / (TP + TN + FP + FN)
- 정밀도 (Precision) = TP / (TP + FP)
- 재현율 (Recall) = TP / (TP + FN)
- F1 스코어 (F1 Score) = 2 * (Precision * Recall) / (Precision + Recall)
이번 예제에서는 혼동 행렬만 사용하여 모델을 평가했지만, 실제 프로젝트에서는 위에서 언급한 다양한 평가 지표를 사용하여 모델의 성능을 측정하고 개선하는 것이 좋습니다.
이상으로 로지스틱 회귀를 사용한 이진 분류 모델 학습 및 평가에 대한 설명을 마칩니다. 이 예제를 통해 로지스틱 회귀의 개념과 혼동 행렬을 사용한 모델 평가 방법에 대해 이해하셨기를 바랍니다. 이를 통해 다양한 분류 문제에 적용하여 더 나은 모델을 개발할 수 있습니다. 감사합니다!
'머신러닝 파이썬' 카테고리의 다른 글
| python에서 pyplot.scatter()에서 마커 설정 (0) | 2023.03.17 |
|---|---|
| iris데이터 scatter plot 연습 (0) | 2023.03.17 |
| Geometric Brownian Motion(GBM) 모형으로 주가생성 feat. python (0) | 2023.03.17 |
| scikit-learn 의 MeanShift알고리즘을 이용한 군집분석 예제 (0) | 2023.03.17 |
| iris데이터를 gaussian mixture모형을 이용한 군집화 (0) | 2023.03.17 |