我是MATLAB的新手,现在我正在尝试创建一个2-d高斯分布数据来训练我的神经网络。我刚刚在官方文档中找到了代码。
mu = [0 0];
Sigma = [.25 .3; .3 1];
x1 = -3:.2:3; x2 = -3:.2:3;
[X1,X2] = meshgrid(x1,x2);
F = mvnpdf([X1(:) X2(:)],mu,Sigma);
我知道" mu"是数据的平均值。 Sigma是与之相关的 标准偏差。但我只是不知道mesgrid和间隔(x1,x2)的概念。以及这些代码的几何意义。
另外,有人可以解释一下为什么guassian发行在机器学习和数据科学中如此重要?因为所有的课程一直在说和说这个词。
答案 0 :(得分:0)
Meshgrid是一个基本的matlab函数,它与神经网络或高斯分布无关。检查Matlab的the documentation以了解更多信息。
高斯分布(也称为正态分布)对数据科学很重要,因为它具有几个很好的统计特性。不幸的是,很难以紧凑的方式描述它们,这也不是关于编程的问题,而是关于统计的更多问题。
答案 1 :(得分:0)
我认为您提供的代码似乎让您感到困惑,因为您希望它生成样本,而它只返回某些给定对(x1,x2)的高斯PDF(概率密度函数)的值。 例如,F = mvnpdf(a,b,mu,Sigma)返回x1 = a和x2 = b的概率,假设它们遵循具有均值μ和协方差矩阵Sigma的多元高斯分布。
在Stack Overflow中,我专注于您问题的Matlab方面:为了生成100个2-D Gaussian样本,您可以使用类似下面的内容(取自randn函数的Matlab帮助):
mu = [1 2];
Sigma = [1 .5; .5 2];
R = chol(Sigma);
z = repmat(mu,100,1) + randn(100,2)*R;
数组z = [x1,x2]包含您要查找的x1和x2向量。
一些统计学教科书或维基百科可以说服你为什么上面的代码确实生成了这样的样本。最后一行代码与高斯分布(或任何其他椭圆分布)的一个很好的属性有关。