写一个能运行出matlab图的贝叶斯分类器代码
时间: 2024-05-16 16:16:30 浏览: 109
基于贝叶斯实现数据分类附原始matlab代码和数据集.zip
以下是一个简单的贝叶斯分类器的 Matlab 代码示例,用于将数据分为两个类别。在这个示例中,我们假设数据是二维的。
```matlab
% 生成随机数据
n = 100; % 数据个数
x1 = randn(n, 1);
x2 = randn(n, 1);
% 将数据分为两个类别
y = sign(x1 - x2 + randn(n, 1)*0.1);
% 绘制数据散点图
plot(x1(y==1), x2(y==1), 'o');
hold on;
plot(x1(y==-1), x2(y==-1), 'x');
% 计算类别的先验概率
p1 = sum(y==1)/n;
p2 = sum(y==-1)/n;
% 计算类别的条件概率
mu1 = [mean(x1(y==1)), mean(x2(y==1))];
mu2 = [mean(x1(y==-1)), mean(x2(y==-1))];
sigma1 = cov(x1(y==1), x2(y==1));
sigma2 = cov(x1(y==-1), x2(y==-1));
% 绘制决策边界
[x, y] = meshgrid(-3:0.1:3, -3:0.1:3);
z = zeros(size(x));
for i = 1:size(x, 1)
for j = 1:size(x, 2)
X = [x(i,j), y(i,j)];
z(i,j) = log(p1) - 0.5*log(det(sigma1)) - 0.5*(X-mu1)*inv(sigma1)*(X-mu1)'...
- log(p2) + 0.5*log(det(sigma2)) + 0.5*(X-mu2)*inv(sigma2)*(X-mu2)';
end
end
contour(x, y, z, [0,0], 'LineWidth', 2);
xlabel('x1');
ylabel('x2');
title('贝叶斯分类器');
legend('类别1', '类别2');
```
运行代码,你将会看到一个散点图,同时还有一个决策边界,决策边界将数据分为两个类别。
阅读全文