[python] scikit-learn을 사용한 로지스틱 회귀 시각화

로지스틱 회귀는 분류 모델 중 하나로, 데이터가 어느 클래스에 속하는지를 예측하는데 사용됩니다. 이번에는 scikit-learn 라이브러리를 사용하여 로지스틱 회귀를 수행하고 결과를 시각화하는 방법에 대해 알아보겠습니다.

1. scikit-learn 소개

scikit-learn은 파이썬 기반의 머신러닝 라이브러리로, 다양한 머신러닝 알고리즘과 유틸리티 함수를 제공합니다. 로지스틱 회귀를 비롯한 다양한 모델을 쉽게 구현할 수 있는 간편한 API를 갖고 있으며, 데이터 전처리와 모델 평가 등을 위한 다양한 기능을 지원합니다.

2. 로지스틱 회귀 시각화 예제

이번 예제에서는 scikit-learn의 내장 데이터셋인 iris 데이터셋을 사용하여 로지스틱 회귀를 시각화해보겠습니다. 우선 필요한 패키지와 데이터셋을 로드합니다.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris

# iris 데이터셋 로드
iris = load_iris()
X = iris.data[:, :2]  # 데이터셋의 첫 두 개의 특성만 선택
y = iris.target

로드한 데이터셋에서 첫 번째 두 개의 특성만 선택한 후, LogisticRegression 클래스를 사용하여 로지스틱 회귀 모델을 학습합니다.

# 로지스틱 회귀 모델 생성 및 학습
model = LogisticRegression()
model.fit(X, y)

모델을 학습한 후에는 결정 경계(decision boundary)를 시각화하기 위해 격자 포인트들을 생성하고 예측 결과를 구합니다.

# 결정 경계 시각화를 위한 격자 포인트 생성
h = 0.02  # 격자 간격
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))

# 격자 포인트들을 입력으로 사용하여 예측 결과 구하기
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

이제 모델의 예측 결과와 데이터셋을 시각화하여 결정 경계를 확인할 수 있습니다.

# 데이터셋과 결정 경계 시각화
plt.contourf(xx, yy, Z, cmap=plt.cm.RdYlBu)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Set1)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.title('Logistic Regression')
plt.show()

위의 코드를 실행하면 로지스틱 회귀 모델의 결정 경계와 데이터셋이 시각화됩니다.

3. 결론

scikit-learn 라이브러리를 사용하여 로지스틱 회귀를 수행하고 시각화하는 방법에 대해 알아보았습니다. 이를 통해 데이터셋의 분류 문제를 해결하는 로지스틱 회귀 모델을 쉽게 구현하고 시각화할 수 있습니다. scikit-learn은 머신러닝 프로젝트에서 널리 사용되는 도구이므로 익숙해지는 것이 좋습니다.

4. 참고 자료