首页 文章

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

提问于
浏览
4

我在包含语音特征和加速度计测量的数据集上使用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 回答

  • 2

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

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

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

  • 4

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

相关问题