2015-07-08 12 views
5

Comprendo quanto segue:Come si disegna una linea usando il vettore di peso in un Perceptron lineare?

Nello spazio 2D, ogni punto dati ha 2 funzioni: x e y. Il vettore di peso nello spazio 2D contiene 3 valori [bias, w0, w1] che possono essere riscritti come [w0, w1, w2]. Ogni punto dati ha bisogno di una coordinata artificiale [1, x, y] per il calcolo del prodotto punto tra esso e il vettore pesi.

La regola di apprendimento utilizzato per aggiornare il vettore di pesi per ogni punto misclassfied è w: = w + yn * xn

La mia domanda è: come si fa a trarre due punti dal vettore peso w = [A, B , C] per rappresentare graficamente il confine della decisione?

Capisco A + Bx + Cy = 0 è l'equazione lineare in forma generale (A, B, C possono essere presi dal vettore pesi) ma non so come tracciarlo.

Grazie in anticipo.

+0

Questa domanda è stato chiesto prima, ad esempio, http://stats.stackexchange.com/questions/71335/decision-boundary-plot-for-a-perceptron – runDOSrun

risposta

2

Il modo migliore per disegnare una linea è trovare il valore x minimo e il valore x massimo sull'asse del display. calcolare i valori di y usando l'equazione di linea nota (- (A + BX)/C). Questo risultato in due punti usa il comando di trama incorporata per tracciare una linea.

7

Collegare i pesi in forma generale (w0 + W1X + w2y = 0) e risolvere per x, x = 0, y, y = 0:

x = -(w0 - w2y)/w1 
x = 0 when y = -w0/w2 
y = -(w0 - w1x)/w2 
y = 0 when x = -w0/w1 

Ora abbiamo due punti che si trovano su la linea: (0, -w0/w2) e (-w0/W1, 0)

slope = -(w0/w2)/(w0/w1) 
intercept = -w0/w2 
+0

Questo ha funzionato esattamente per me. Stavo progettando un semplice perceptron con due input e un input per bias, quindi dopo l'allenamento ho avuto 3 pesi, w0, w1, w2 e w0 non è altro che il bias. Inserisco i valori nella pendenza, intercetto la formula sopra, e ha ben disegnato il limite decisionale per i miei punti dati di esempio. Grazie. –

0

Recentemente stavo cercando di implementare la stessa cosa, ma troppo confuso come disegnare la trama decisione di confine con tre pesi $ w_0, W_1, w_2 $. E in base alla soluzione di @Joshu di cui sopra, ho scritto il codice matplotlib per tracciare una linea di confine.

def plot_data(self,inputs,targets,weights): 
    # fig config 
    plt.figure(figsize=(10,6)) 
    plt.grid(True) 

    #plot input samples(2D data points) and i have two classes. 
    #one is +1 and second one is -1, so it red color for +1 and blue color for -1 
    for input,target in zip(inputs,targets): 
     plt.plot(input[0],input[1],'ro' if (target == 1.0) else 'bo') 

    # Here i am calculating slope and intercept with given three weights 
    for i in np.linspace(np.amin(inputs[:,:1]),np.amax(inputs[:,:1])): 
     slope = -(weights[0]/weights[2])/(weights[0]/weights[1]) 
     intercept = -weights[0]/weights[2] 

     #y =mx+c, m is slope and c is intercept 
     y = (slope*i) + intercept 
     plt.plot(i, y,'ko') 

simple perceptron classifies two different class

Problemi correlati