2015-10-03 99 views
3

我已經編寫了一個多層感知的二進制分類。據我所知,一個隱藏層可以用線條表示爲決策邊界(每個隱藏神經元一行)。這個效果很好,可以很容易地在訓練後使用最終的權重進​​行繪製。多層感知器,可視化Python中的決策邊界(2D)

但是,隨着更多圖層的添加,我不確定使用什麼方法,而可視化部分很少在教科書中處理。我想知道,是否有直接的方法將權重矩陣從不同的層轉換到這個非線性決策邊界(假設2D輸入)?

非常感謝,

+0

從我的理解,不是感知器只用於線性函數? – Leb

+0

是的,從原始意義上講,多層版本會產生非線性函數。 – johnblund

+0

感謝您的解釋。我沒有使用多重播放器 – Leb

回答

3

一個繪製決策邊界(既用於線性或非線性分類器)的方法中的在一個均勻網格採樣點,並將它們饋送到分類器。 Asumming 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(這btw,是一個偉大的機器學習庫與一個完全工作的感知器實施)。

+0

謝謝,很好地解釋。 – johnblund

+0

只是另一個問題,因爲它是第一個NN I程序。在你的例子中,模式是輸入矩陣(X)中的行矢量的約定嗎? – johnblund

+0

@johnblund我不是100%確定它是否以不同的方式用於神經網絡(因爲我不使用它們),但是對於機器學習來說,慣例是將訓練數據放在一個'X = [ n_samples x n_features]矩陣和矩陣y = [n_samples x 1]或y = [n_samples x n_classes]的基礎事實(對於NN,它將是'y = [n_samples x n_outputs]'' n_outputs'通常對應於'n_classes'的最後一層的輸出)。 –