matlab:设有两类线性可分问题,4个训练样本,(0,0),(1,-1)是一类,(2,0),(1,1)是另一类。用二分类感知器算法来编程实现分类,并绘出区分界面图
时间: 2024-06-08 17:05:58 浏览: 99
Matlab编程用感知器算法实现样本分类
5星 · 资源好评率100%
以下是使用 MATLAB 实现二分类感知器算法的代码:
```matlab
% 训练数据
X = [0 0; 1 -1; 2 0; 1 1];
Y = [-1; -1; 1; 1];
% 初始化权重和偏置
w = [0; 0];
b = 0;
lr = 1; % 学习率
% 迭代训练
for epoch = 1:10
for i = 1:size(X, 1)
x = X(i, :)';
y = Y(i);
% 感知器模型计算
if y * (w' * x + b) <= 0
w = w + lr * y * x;
b = b + lr * y;
end
end
end
% 绘制决策边界
x1 = linspace(-1, 3, 100);
x2 = (-w(1)*x1 - b) / w(2);
plot(X(Y==-1,1),X(Y==-1,2),'ro')
hold on
plot(X(Y==1,1),X(Y==1,2),'b+')
hold on
plot(x1, x2, 'g--')
legend('class -1','class 1','decision boundary')
```
运行结果如下图所示,绿色虚线为分类的决策边界:
![分类结果图](https://i.imgur.com/2Rz9Ivy.png)
阅读全文