有最大似然判决的MATLAB代码吗
时间: 2023-06-20 14:08:33 浏览: 115
当分类问题中样本的特征$x$是连续变量时,可以使用最大似然判别法来进行分类。假设样本来自于两个不同的高斯分布,可以通过计算样本在两个分布下出现的概率,来判断哪个分布更有可能生成该样本,从而对样本进行分类。
下面是一个简单的MATLAB代码,用于实现最大似然判别法:
```matlab
% 生成两个高斯分布的样本数据
mu1 = [1, 1];
sigma1 = [1, 0; 0, 1];
X1 = mvnrnd(mu1, sigma1, 100); % 生成100个样本
mu2 = [4, 4];
sigma2 = [1, 0; 0, 1];
X2 = mvnrnd(mu2, sigma2, 100); % 生成100个样本
% 合并两个样本
X = [X1; X2];
% 生成标签
y = [ones(100, 1); ones(100, 1) * 2];
% 计算样本在两个分布下的概率
P1 = mvnpdf(X, mu1, sigma1);
P2 = mvnpdf(X, mu2, sigma2);
% 判断哪个分布更有可能生成该样本
y_pred = P1 < P2 + eps + (P1 == P2) * eps; % eps是一个非常小的数,用于避免出现除以0的情况
```
在上面的代码中,首先生成了两个高斯分布的样本数据,然后使用`mvnpdf`函数计算每个样本在两个分布下的概率,最后通过比较两个概率来判断哪个分布更有可能生成该样本,从而得到样本的分类结果。
阅读全文