编程语言
首页 > 编程语言> > 多层感知器,可视化Python中的决策边界(2D)

多层感知器,可视化Python中的决策边界(2D)

作者:互联网

我为二进制分类编写了多层感知器.据我了解,一个隐藏层可以仅使用线条作为决策边界来表示(每个隐藏神经元一行).这很好用,并且只需使用训练后得到的权重就可以轻松绘制出来.

但是,随着添加更多的层,我不确定使用哪种方法,并且教科书中很少处理可视化部分.我想知道,是否存在将权重矩阵从不同层转换到此非线性决策边界(假设2D输入)的直接方法?

非常感谢,

解决方法:

绘制决策边界(对于线性或非线性分类器而言)的一种方法是在均匀网格中对点进行采样并将其馈送到分类器.假设X是您的数据,则可以如下创建一个统一的点网格:

h = .02  # step size in the mesh
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))

然后,将这些坐标输入到感知器以捕获其预测:

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

假设clf是您的感知器,则np.c_从统一采样的点创建特征,将其馈送到分类器,并在Z中捕获其预测.

最后,将决策边界绘制为等高线图(使用matplotlib):

Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, cmap=plt.cm.Paired, alpha=0.8)

并且可以选择绘制您的数据点:

plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired)

Fully working example,本示例的功劳归于scikit-learn(顺便说一句,这是一个很棒的机器学习库,实现了可正常运行的Perceptron).

标签:neural-network,visualization,perceptron,python,numpy
来源: https://codeday.me/bug/20191119/2037698.html