개발 문서/Python
로지스틱 회귀 분석
copg
2023. 11. 9. 22:10
728x90
반응형
로지스틱 회귀 분석은 종속 변수가 이항(binary)인 경우에 사용되는 통계적인 분석 기법 중 하나입니다. 이는 주로 이진 분류 문제에 적용되며, 데이터가 두 개의 클래스 중 하나에 속하는지를 예측하는 데 사용됩니다.
로지스틱 회귀 모델:
로지스틱 회귀 모델은 선형 회귀 모델을 확장하여 로지스틱 함수 (시그모이드 함수)를 사용하여 0과 1 사이의 값을 출력합니다.
[ P(Y=1) = \frac{1}{1 + e^{-(\beta_0 + \beta_1X_1 + \beta_2X_2 + \ldots + \beta_nX_n)}} ]
- (P(Y=1)): 종속 변수가 1일 확률
- (e): 자연 로그의 밑 (오일러 상수)
- (\beta_0, \beta_1, \ldots, \beta_n): 모델의 파라미터 (절편 및 회귀 계수)
- (X_1, X_2, \ldots, X_n): 독립 변수들
주요 특징:
- 이진 분류: 주로 두 개의 클래스로 분류하는 데 사용됩니다.
- 확률 출력: 0과 1 사이의 확률 값을 출력하므로, 임계값을 설정하여 클래스를 결정합니다.
- 선형 결합: 독립 변수들의 선형 결합을 로지스틱 함수에 적용하여 확률을 계산합니다.
주요 단계:
- 데이터 수집: 종속 변수 및 독립 변수의 이진 분류 데이터를 수집합니다.
- 데이터 전처리: 결측값 처리, 이상치 제거, 특성 스케일링 등의 전처리를 수행합니다.
- 모델 선택: 로지스틱 회귀 모델을 선택합니다.
- 모델 훈련: 주어진 데이터를 사용하여 모델을 훈련시킵니다.
- 모델 평가: 모델의 성능을 평가하고 예측 정확도를 확인합니다.
- 예측: 새로운 데이터에 대한 예측을 수행합니다.
Python에서의 구현:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, confusion_matrix
# 데이터 생성
X = np.random.rand(100, 1)
y = (X > 0.5).astype(int).flatten()
# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 로지스틱 회귀 모델 생성 및 훈련
model = LogisticRegression()
model.fit(X_train, y_train)
# 예측
y_pred = model.predict(X_test)
# 모델 평가
accuracy = accuracy_score(y_test, y_pred)
conf_matrix = confusion_matrix(y_test, y_pred)
# 결과 출력
print(f'Accuracy: {accuracy}')
print('Confusion Matrix:')
print(conf_matrix)
# 시각화
plt.scatter(X_test, y_test, color='blue')
plt.plot(X_test, model.predict_proba(X_test)[:, 1], color='red', linewidth=2)
plt.xlabel('X')
plt.ylabel('Probability of Class 1')
plt.show()
이 코드는 scikit-learn을 사용하여 로지스틱 회귀를 구현한 예제입니다. 주어진 데이터를 학습하고 테스트하여 모델의 성능을 확인합니다. 이러한 모델은 이진 분류 문제에서 효과적으로 사용됩니다.