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



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

现在我需要实时使用这个神经网络来识别模式,并在我测试一个新的数据集与先前训练过的神经网络时生成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

有什么命令或方法可以让我看到分类结果吗?任何帮助,高度赞赏!由于

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

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

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

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

最新更新