多层感知器,可视化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