如何在python中绘制正确的超平面

2024-04-29 08:51:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码:

我的绘图功能:

def draw_hyper_plane(coef,intercept,y_max,y_min):
points=np.array([[((-coef*y_min - intercept)/coef), y_min],[((-coef*y_max - intercept)/coef), y_max]])
plt.plot(points[:,0], points[:,1])

实际输出:

this is output from above code

期望输出:

this is the result i want to get

通过我的代码,我无法找到正确的超平面,可以正确地分类的点,因为在所需的输出图。有人能帮我吗


Tags: 代码功能绘图defnppltminarray
1条回答
网友
1楼 · 发布于 2024-04-29 08:51:50

一种方法是使用分类器中的decision_function并绘制一些水平线(level=0对应于您的超平面)。这里有一些代码。你知道吗

def plot_2d_separator(classifier, X, fill=False, ax=None, eps=None):
    if eps is None:
        eps = X.std() / 2.
    x_min, x_max = X[:, 0].min() - eps, X[:, 0].max() + eps
    y_min, y_max = X[:, 1].min() - eps, X[:, 1].max() + eps
    xx = np.linspace(x_min, x_max, 100)
    yy = np.linspace(y_min, y_max, 100)

    X1, X2 = np.meshgrid(xx, yy)
    X_grid = np.c_[X1.ravel(), X2.ravel()]
    try:
        decision_values = classifier.decision_function(X_grid)
        levels = [0]
        fill_levels = [decision_values.min(), 0, decision_values.max()]
    except AttributeError:
        # no decision_function
        decision_values = classifier.predict_proba(X_grid)[:, 1]
        levels = [.5]
        fill_levels = [0, .5, 1]

    if ax is None:
        ax = plt.gca()
    if fill:
        ax.contourf(X1, X2, decision_values.reshape(X1.shape),
                    levels=fill_levels, colors=['tab:blue', 'tab:orange'],
                    alpha=0.5)
    else:
        ax.contour(X1, X2, decision_values.reshape(X1.shape), levels=levels,
                   colors="black")
    ax.set_xlim(x_min, x_max)
    ax.set_ylim(y_min, y_max)
    ax.set_xticks(())
    ax.set_yticks(())

这个代码是there开发的

相关问题 更多 >