matlab实现多元高斯分布概率密度计算

        最近要应用多元高斯分布进行异常检测,使用matlab实现。

1.使用matlab自带函数mvnpdf

mvnpdf(data,miu,COV)

        在这里,data是需要计算多元高斯分布概率密度的m*n维数组。m是数据的条数,n是每条数据的特征数。miu是属性的平均值组成的向量(是行向量),COV为协方差矩阵。

2.用原始公式

多元高斯分布的概率密度公式如下。使用矩阵计算实现

i=17;%特征个数
m=1;
while m<=30687
    x=data(m,:)';%带入的数据
    p(m)=(1/((2*3.1415926)^(i/2)*det(COV)^(1/2)))*(exp(-((x-miu)'*inv(COV)*(x-miu))/2));
    m=m+1;
end

其中i为特征个数,COV为协方差矩阵,miu为每个属性的平均值组成的向量(是列向量)。此处每一条数据也要变成列向量的形式(x=data(m,:)';)。

inv()用于矩阵求逆,det()用于求方阵的行列式,cov()函数用于求协方差(小写)。

最终两种方式的结果近似相同。

 

 此处要注意的就是平均值向量是行向量还是列向量。如果报错就试试转置一下

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值