贝叶斯在matlab中的代码
时间: 2024-05-29 19:12:30 浏览: 82
max_sin,贝叶斯matlab源码,matlab
以下是一个使用Matlab实现贝叶斯分类器的简单示例代码:
% 假定有两个类别,每个类别有两个特征
% 定义训练集
train_data = [1, 2, 1, 1; 2, 3, 2, 1; 3, 4, 1, 2; 4, 5, 2, 2];
% 定义训练集标签
train_label = [1; 1; 2; 2];
% 计算每个类别的先验概率
prior_1 = sum(train_label == 1) / length(train_label);
prior_2 = sum(train_label == 2) / length(train_label);
% 计算每个类别的条件概率分布
% 假设特征服从正态分布
mean_1 = mean(train_data(train_label == 1, :));
std_1 = std(train_data(train_label == 1, :));
mean_2 = mean(train_data(train_label == 2, :));
std_2 = std(train_data(train_label == 2, :));
% 定义测试数据
test_data = [1.5, 2.5, 1.5, 1.5];
% 计算测试数据在每个类别下的后验概率
posterior_1 = prior_1 * normpdf(test_data, mean_1, std_1);
posterior_2 = prior_2 * normpdf(test_data, mean_2, std_2);
% 判断测试数据属于哪个类别
if posterior_1 > posterior_2
disp('属于第一类');
else
disp('属于第二类');
end
该代码假定特征服从正态分布,并使用normpdf函数计算概率密度函数。在实际应用中,可能需要根据具体问题选择不同的概率分布或使用其他方法估计概率分布。
阅读全文