퍼셉트론이 각 반복에서 출력을 예측하는 방법은 다음 방정식을 따르는 것입니다.
와이제이= f[ w티x ]=f[ w⃗ ⋅ x⃗ ] = f[ w0+ 승1엑스1+ 승2엑스2+ . . . + 승엔엑스엔]
당신이 말했듯이, 당신의 무게 는 바이어스 항 w 0을 포함합니다 . 따라서 내적을 유지하려면 입력에 1 을 포함해야합니다 .승⃗ 승01
일반적으로 가중치에 대한 열 벡터, 즉 벡터로 시작합니다. 정의에 따라 내적은 1 × n 가중치 벡터 를 얻기 위해이 벡터를 전치 해야하고 해당 내적을 보완하려면 n × 1 입력 벡터 가 필요합니다 . 그렇기 때문에 위의 방정식에서 행렬 표기법과 벡터 표기법 간의 변화를 강조하여 표기법이 올바른 치수를 어떻게 제안하는지 확인할 수 있습니다.n × 11 × nn × 1
이는 트레이닝 세트에있는 각 입력에 대해 수행됩니다. 그 후, 가중치 벡터를 업데이트하여 예측 출력과 실제 출력 간의 오류를 수정하십시오.
의사 결정 경계에 대해서는 여기에서 찾은 scikit 학습 코드의 수정 사항이 있습니다 .
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')
다음 플롯을 생성합니다.
기본적으로 아이디어는 모든 점을 포함하는 메쉬의 각 점에 대한 값을 예측하고를 사용하여 적절한 색상으로 각 예측을 플로팅하는 것 contourf
입니다.