gpt4 book ai didi

matplotlib - 绘制逻辑回归的决策边界

转载 作者:行者123 更新时间:2023-12-03 14:31:08 25 4
gpt4 key购买 nike

我正在实现逻辑回归。我设法从中获得了概率,并且能够预测 2 类分类任务。

我的问题是:

对于我的最终模型,我有权重和训练数据。有 2 个特征,所以我的权重是一个有 2 行的向量。

我如何绘制这个?我看到了 this post ,但我不太明白答案。我需要等高线图吗?

最佳答案

逻辑回归分类器的一个优点是,一旦拟合它,就可以获得任何样本向量的概率。这可能更有趣。下面是一个使用 scikit-learn 的例子:

import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="white")

首先,生成数据并将分类器拟合到训练集:
X, y = make_classification(200, 2, 2, 0, weights=[.5, .5], random_state=15)
clf = LogisticRegression().fit(X[:100], y[:100])

接下来,制作一个连续的值网格并评估网格中每个 (x, y) 点的概率:
xx, yy = np.mgrid[-5:5:.01, -5:5:.01]
grid = np.c_[xx.ravel(), yy.ravel()]
probs = clf.predict_proba(grid)[:, 1].reshape(xx.shape)

现在,将概率网格绘制为等高线图,并在其上另外显示测试集样本:
f, ax = plt.subplots(figsize=(8, 6))
contour = ax.contourf(xx, yy, probs, 25, cmap="RdBu",
vmin=0, vmax=1)
ax_c = f.colorbar(contour)
ax_c.set_label("$P(y = 1)$")
ax_c.set_ticks([0, .25, .5, .75, 1])

ax.scatter(X[100:,0], X[100:, 1], c=y[100:], s=50,
cmap="RdBu", vmin=-.2, vmax=1.2,
edgecolor="white", linewidth=1)

ax.set(aspect="equal",
xlim=(-5, 5), ylim=(-5, 5),
xlabel="$X_1$", ylabel="$X_2$")

enter image description here

逻辑回归让您可以根据您想要的任何阈值对新样本进行分类,因此它本质上没有一个“决策边界”。但是,当然,常用的决策规则是 p = .5。我们也可以使用上面的代码绘制该轮廓级别:
f, ax = plt.subplots(figsize=(8, 6))
ax.contour(xx, yy, probs, levels=[.5], cmap="Greys", vmin=0, vmax=.6)

ax.scatter(X[100:,0], X[100:, 1], c=y[100:], s=50,
cmap="RdBu", vmin=-.2, vmax=1.2,
edgecolor="white", linewidth=1)

ax.set(aspect="equal",
xlim=(-5, 5), ylim=(-5, 5),
xlabel="$X_1$", ylabel="$X_2$")

enter image description here

关于matplotlib - 绘制逻辑回归的决策边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28256058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com