Matlab中的前馈神经网络分类

时间:2016-04-13 07:21:24

标签: matlab machine-learning neural-network classification pattern-recognition

我有两个高斯分布样本,一个guassian包含10,000个样本,另一个高斯也包含10,000个样本,我想用这些样本训练一个前馈神经网络,但我不知道我需要接收多少个样本以获得最佳决策边界。 这是代码,但我不确切地知道解决方案和输出是奇怪的。

x1 = -49:1:50;
x2 = -49:1:50;
[X1, X2] = meshgrid(x1, x2);
Gaussian1 = mvnpdf([X1(:) X2(:)], mean1, var1);// for class A
Gaussian2 = mvnpdf([X1(:) X2(:)], mean2, var2);// for Class B
net = feedforwardnet(10);
G1 = reshape(Gaussian1, 10000,1);
G2 = reshape(Gaussian2, 10000,1);
input = [G1, G2];
output = [0, 1];
net = train(net, input, output);

当我运行代码时,它会给我带来奇怪的结果。 如果代码不正确,有人可以建议我,以便我可以获得这两个发行版的决策边界。

1 个答案:

答案 0 :(得分:0)

我很确定输入必须是高斯分布(而不是x坐标)。事实上,NN必须理解你感兴趣的现象本身(高斯分布)和输出标签之间的关系,而不是在包含现象和标签的空间之间。此外,如果选择x坐标,NN将尝试理解后者与输出标签之间的某种关系,但x可能是常量(即输入数据可能是均匀的)所有相同的,因为你可以在x坐标的相同范围内具有非常不同的高斯分布,只改变平均值和方差。因此NN最终会被混淆,因为相同的输入数据可能有更多的输出标签(你不希望这件事发生!!!)。
我希望我能提供帮助。

P.S。:为了怀疑,我必须告诉你,如果你有一个小的训练集,NN不太适合数据。此外,不要忘记使用交叉验证技术验证您的数据模型(一个好的经验法则是使用20%的训练集用于交叉验证集,另外20%的相同训练集用于测试设置并因此仅使用剩余的60%训练集来训练您的模型。