如何在Matlab中使用训练好的神经网络进行实际系统的分类

时间:2013-01-04 19:16:08

标签: matlab machine-learning neural-network classification

我在包含语音功能和加速度计测量的数据集上使用Matlab神经网络工具箱训练前馈神经网络。 Targetset包含两个数据集目标类:0和1.培训,验证和性能都很好,我已经为这个网络生成了代码。

现在我需要实时使用这个神经网络来识别模式,并在我针对之前训练过的NN测试新数据集时生成0或1。但是当我发出命令时:

   c = sim(net, j)

其中“j”是新数据集[24x11];相反0或1我得到这个作为输出(我假设我得到正确分类的百分比,但本身没有分类结果):

c =

  Columns 1 through 9

    0.6274    0.6248    0.9993    0.9991    0.9994    0.9999    0.9998    0.9934    0.9996

  Columns 10 through 11

    0.9966    0.9963

那么有什么命令或方法可以实际看到分类结果吗?任何帮助高度赞赏!感谢

2 个答案:

答案 0 :(得分:4)

我不是matlab用户,但从逻辑的角度来看,你错过了一个重点:

神经网络的输入是单个向量,您传递的是矩阵。因此,matlab认为你想要对一堆向量进行分类(在你的情况下为11)。所以你得到的矢量是这11个矢量中每一个的输出激活。

输出激活是介于0和1之间的值(我猜你使用的是sigmoid),所以这是完全正常的。您的工作是获得最适合您数据的阈值。您可以通过对训练/测试数据进行交叉验证来获得此阈值,或者只选择一个(0.5?)并查看结果是否“良好”并在需要时进行修改。

答案 1 :(得分:2)

NN通常使用例如逻辑函数将其输出转换为(0,1)内的值。这不是百分比或概率,只是确定性的相对衡量标准。在任何情况下,这意味着您必须手动使用阈值(例如0.5)来区分这两个类。哪个阈值最好很难找到,因为您必须在精确度和召回之间选择最佳权衡。