keras Python中决策边界的绘制和采样

jk9hmnmh  于 2022-11-13  发布在  Python
关注(0)|答案(1)|浏览(165)

我有一个简单的分类网络,它接受一个长度为2的向量,并进行整数预测。我试图更好地理解预测的决策边界。我有一个10,000个点的数据集,训练集的大小为9,000。特征是框[-1,1]^2,标签是长度为3的独热编码矢量。从link,我得到了一种绘制判定边界的方法,代码如下:

def plot_decision_boundary(X, y, model, steps=1000, cmap='Paired'):
    """
    Function to plot the decision boundary and data points of a model.
    Data points are colored based on their actual label.
    """
    cmap = plt.get_cmap(cmap)
    
    # Define region of interest by data limits
    xmin, xmax = X[:,0].min() - 1, X[:,0].max() + 1
    ymin, ymax = X[:,1].min() - 1, X[:,1].max() + 1
    steps = 1000
    x_span = np.linspace(xmin, xmax, steps)
    y_span = np.linspace(ymin, ymax, steps)
    xx, yy = np.meshgrid(x_span, y_span)

    # Make predictions across region of interest
    labels = model.predict(np.c_[xx.ravel(), yy.ravel()])

    # Plot decision boundary in region of interest
    z = labels.reshape(xx.shape)
    
    fig, ax = plt.subplots()
    ax.contourf(xx, yy, z, cmap=cmap, alpha=0.5)

    # Get predicted labels on training data and plot
    train_labels = model.predict(X)
    ax.scatter(X[:,0], X[:,1], c=y, cmap=cmap, lw=0)
    return(fig,ax)

在这里,我调用plot_decision_boundary(train_features, train_labels_onehot, model, cmap='RdBu')来创建决策边界图(参见上面链接中的示例)。

ovfsdjhp

ovfsdjhp1#

因此,问题是,由于X是一个Pandas Dataframe ,它不能通过切片访问的方式,你这样做。
例如,X[:,0]不会给予 Dataframe X的第0列。
相反,您有两个选择:使用iloc并按照您在此处尝试的方式创建切片:
X.iloc[:,0]以获取第0列。
或者,如果您知道列名,则可以直接说X["column_name"]。您可以使用X.columns来查找列名。

相关问题