1

例如,我们有 f(x) = x。如何绘制它?我们取一些 x 然后计算 y 并再次执行此操作,然后按点绘制图表。简单明了。

但我无法理解如此清楚地绘制决策边界 - 当我们没有 y 绘制时,只有 x。

SVM 的 Python 代码:

h = .02  # step size in the mesh
Y = y
# we create an instance of SVM and fit out data. We do not scale our
# data since we want to plot the support vectors
C = 1.0  # SVM regularization parameter
svc = svm.SVC(kernel='linear', C=C).fit(X, Y)
rbf_svc = svm.SVC(kernel='rbf', gamma=0.7, C=C).fit(X, Y)
poly_svc = svm.SVC(kernel='poly', degree=3, C=C).fit(X, Y)
lin_svc = svm.LinearSVC(C=C).fit(X, Y)

# create a mesh to plot in
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))


for i, clf in enumerate((svc, rbf_svc, poly_svc, lin_svc)):
    # Plot the decision boundary. For that, we will asign a color to each
    # point in the mesh [x_min, m_max]x[y_min, y_max].

绘制图表的所有内容都在这里,我是如何理解的:

    pl.subplot(2, 2, i + 1)
    Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])

    # Put the result into a color plot
    Z = Z.reshape(xx.shape)
    pl.contourf(xx, yy, Z, cmap=pl.cm.Paired)
    pl.axis('off')

    # Plot also the training points
    pl.scatter(X[:, 0], X[:, 1], c=Y, cmap=pl.cm.Paired)

pl.show()

有人可以用文字解释这个绘图是如何工作的吗?

4

1 回答 1

6

基本上,您正在绘制函数f : R^2 -> {0,1},因此它是从二维空间到只有两个值的退化空间的函数 -01.

首先,您生成要在其上可视化您的功能的网格。在您的示例中,f(x)=y您将选择一些间隔[x_min,x_max],在该间隔上您将采用一定距离的点eps并绘制相应的值f

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))

接下来,我们计算函数值,在我们的例子中它是一个SVM.predict函数,结果是0要么1

Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])

f(x)它与您计算所有分析的示例中的相同x

现在,可能导致误解的“棘手”部分是

pl.contourf(xx, yy, Z, cmap=pl.cm.Paired)

此函数绘制函数的轮廓f。为了在平面上可视化 3 维函数,通常会创建等高线图,它就像函数的高度图。如果在f它们周围检测到值的大变化,则在点之间画一条线。

来自数学世界的好例子 样本等高线图

显示了这种情节的一个例子。

在 SVM 的情况下,我们只有两个可能的值-01,因此,等高线正好位于二维空间的这些部分中,一侧是我们,另一侧f(x)=0f(x)=1。因此,即使它看起来像“2d 图”,它也不是——您可以观察到的这个形状(决策边界)是 3d 函数中最大差异的可视化。

sklearn为多分类示例可视化它的文档中,当我们有 时f : R^2 -> {0,1,2},这个想法是完全相同的,但是在相邻的 x1 和 x2 之间绘制了等高线f(x1)!=f(x2)

SVM 多类

于 2013-09-16T10:04:37.190 回答