Визуализация плоскости разделителя в логистической регрессии: методы и примеры кода

Логистическая регрессия – популярный алгоритм машинного обучения, используемый для задач классификации. Одним из ключевых компонентов логистической регрессии является граница решения, также известная как плоскость-разделитель, которая делит пространство признаков на различные классы. Визуализация разделительной плоскости может помочь нам понять, как алгоритм делает прогнозы. В этой статье мы рассмотрим несколько методов визуализации плоскости-разделителя в логистической регрессии, а также примеры кода на Python.

  1. Точечная диаграмма с линией границы решения.
    Самый простой способ визуализировать разделительную плоскость — создать точечную диаграмму точек данных и наложить линию границы решения. Предположим, у нас есть проблема бинарной классификации с двумя признаками: X1 и X2. Вот пример фрагмента кода с использованием библиотеки scikit-learn:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
# Generate some random data
np.random.seed(0)
X = np.random.randn(200, 2)
y = np.random.randint(0, 2, 200)
# Fit logistic regression model
model = LogisticRegression()
model.fit(X, y)
# Scatter plot of data points
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='viridis')
# Plot decision boundary
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, 0.1),
                     np.arange(y_min, y_max, 0.1))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contour(xx, yy, Z, alpha=0.8)
# Set plot labels and title
plt.xlabel('X1')
plt.ylabel('X2')
plt.title('Logistic Regression Separator Plane')
# Show the plot
plt.show()
  1. График тепловой карты.
    Другой подход заключается в создании графика тепловой карты, который визуализирует распределение вероятностей классов в пространстве объектов. Это может обеспечить более детальное представление о границах решения. Вот пример кода с использованием библиотеки seaborn:
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
# Generate some random data
np.random.seed(0)
X = np.random.randn(200, 2)
y = np.random.randint(0, 2, 200)
# Fit logistic regression model
model = LogisticRegression()
model.fit(X, y)
# Create a grid of points in the feature space
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, 0.1),
                     np.arange(y_min, y_max, 0.1))
# Predict probabilities for each point in the grid
Z = model.predict_proba(np.c_[xx.ravel(), yy.ravel()])[:, 1]
Z = Z.reshape(xx.shape)
# Create a heatmap plot
sns.heatmap(Z, cmap='coolwarm', alpha=0.8, xticklabels=False, yticklabels=False)
# Set plot labels and title
plt.xlabel('X1')
plt.ylabel('X2')
plt.title('Logistic Regression Separator Plane')
# Show the plot
plt.show()

Визуализация разделительной плоскости в логистической регрессии может дать ценную информацию о процессе принятия решений алгоритмом. В этой статье мы исследовали два метода достижения этой цели: диаграмму рассеяния с линией границы решения и график тепловой карты. Эти методы можно реализовать с использованием различных библиотек Python, таких как matplotlib, seaborn и scikit-learn. Визуализируя плоскость-разделитель, мы можем лучше понять, как логистическая регрессия разделяет разные классы в пространстве признаков.