Il modo in cui il percettrone prevede l'output in ciascuna iterazione è seguendo l'equazione:
yj= f[ wTx ]=f[ w⃗ ⋅ x⃗ ] = f[ w0+ w1X1+ w2X2+ . . . + wnXn]
Come hai detto, il tuo peso contiene un termine di errore . Pertanto, è necessario includere un nell'input per preservare le dimensioni nel prodotto punto.w⃗ w01
Di solito si inizia con un vettore di colonna per i pesi, ovvero un vettore . Per definizione, il prodotto punto richiede di trasporre questo vettore per ottenere un vettore peso e per integrare quel prodotto punto è necessario un vettore input . Ecco perché ha enfatizzato il cambiamento tra notazione matriciale e notazione vettoriale nell'equazione sopra, in modo da poter vedere come la notazione suggerisce le giuste dimensioni.n × 11 × nn × 1
Ricorda, questo viene fatto per ogni input che hai nel set di allenamento. Successivamente, aggiorna il vettore di peso per correggere l'errore tra l'uscita prevista e l'uscita reale.
Per quanto riguarda il limite di decisione, ecco una modifica del codice di apprendimento di Scikit che ho trovato qui :
import numpy as np
from sklearn.linear_model import Perceptron
import matplotlib.pyplot as plt
X = np.array([[2,1],[3,4],[4,2],[3,1]])
Y = np.array([0,0,1,1])
h = .02 # step size in the mesh
# we create an instance of SVM and fit our data. We do not scale our
# data since we want to plot the support vectors
clf = Perceptron(n_iter=100).fit(X, Y)
# create a mesh to plot in
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))
# Plot the decision boundary. For that, we will assign a color to each
# point in the mesh [x_min, m_max]x[y_min, y_max].
fig, ax = plt.subplots()
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
# Put the result into a color plot
Z = Z.reshape(xx.shape)
ax.contourf(xx, yy, Z, cmap=plt.cm.Paired)
ax.axis('off')
# Plot also the training points
ax.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)
ax.set_title('Perceptron')
che produce il seguente diagramma:
Fondamentalmente, l'idea è di predire un valore per ogni punto in una mesh che copre ogni punto e tracciare ogni previsione con un colore appropriato usando contourf
.