La forma en que el perceptrón predice la salida en cada iteración es siguiendo la ecuación:
yj=f[wTx]=f[w⃗ ⋅x⃗ ]=f[w0+w1x1+w2x2+...+wnxn]
Como dijiste, tu peso contiene un término de sesgo . Por lo tanto, debe incluir un en la entrada para preservar las dimensiones en el producto escalar. w01w⃗ w01
Por lo general, comienza con un vector de columna para los pesos, es decir, un vector . Por definición, el producto de puntos requiere que transponga este vector para obtener un vector de peso y para complementar ese producto de puntos necesita un vector de entrada . Es por eso que enfatizó el cambio entre la notación matricial y la notación vectorial en la ecuación anterior, para que pueda ver cómo la notación le sugiere las dimensiones correctas.1 × n n × 1n×11×nn×1
Recuerde, esto se hace para cada entrada que tenga en el conjunto de entrenamiento. Después de esto, actualice el vector de peso para corregir el error entre la salida predicha y la salida real.
En cuanto al límite de decisión, aquí hay una modificación del código de aprendizaje de scikit que encontré aquí :
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')
que produce la siguiente trama:
Básicamente, la idea es predecir un valor para cada punto en una malla que cubra cada punto, y trazar cada predicción con un color apropiado usando contourf
.