%对于超平面性质的证明在笔记中可以见到,书中对于感知机的介绍已足够详细
%输入空间即特征空间,假设空间是所有w及b确定的超平面,输出空间为{-1, 1}
%数据集 以书中数据为例
T = [3,3,1;
4,3,1;
1,1,-1];
w = zeros(size(T, 1) - 1, 1);
b = 0;
%训练模型,学习速率为1
[w,b] = train(w, b, T, 1)
%测试
res = test(w, b, [3;3])
res = test(w, b, [4;3])
res = test(w, b, [1;1])
%预测
res = test(w, b, [0;0])
res = test(w, b, [5;5])
function res = test(w, b, x)
res = sign(transpose(w) * x + b);
end
%训练感知机模型
%sigma 学习率
function [w, b] = train(w, b, T, sigma)
flag = 1;
while (flag)
flag = 0;
for row=1:1:size(T, 1)
if(sign(T(row, 1:size(T, 2) - 1) * w + b) * T(row, size(T, 2))> 0)
continue;
else
flag = 1;
w = w + sigma * T(row, size(T, 2)) * transpose(T(row, 1:size(T, 2) - 1));
b = b + sigma * T(row, size(T, 2));
end
end
end
end
function res = sign(x)
if (x > 0)
res = 1;
elseif (x < 0)
res = -1;
else
res = 0
end
end