Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于MATLAB的用户识别神经网络训练_Matlab_Neural Network - Fatal编程技术网

基于MATLAB的用户识别神经网络训练

基于MATLAB的用户识别神经网络训练,matlab,neural-network,Matlab,Neural Network,我正在研究步态识别问题,这项研究的目的是用于用户身份验证 我有36个用户的数据 我已经成功地为每个样本(或示例)提取了143个特征,这些特征对于每个用户来说都是(36行143列) (换句话说,我有36个示例,每个示例提取143个特征。因此,为每个用户创建了一个名为36*143的矩阵All_Feat) 顺便说一下,列表示提取特征的数量,行表示每个特征的样本数量(示例) 然后,我将数据分为两部分,训练和测试(训练矩阵包含25行和143列,而测试矩阵包含11行和143列) 然后,对于每个用户,我将矩阵

我正在研究步态识别问题,这项研究的目的是用于用户身份验证

我有36个用户的数据

我已经成功地为每个样本(或示例)提取了143个特征,这些特征对于每个用户来说都是(36行143列)

(换句话说,我有36个示例,每个示例提取143个特征。因此,为每个用户创建了一个名为36*143的矩阵All_Feat

顺便说一下,表示提取特征的数量,行表示每个特征的样本数量(示例)

然后,我将数据分为两部分,训练和测试(训练矩阵包含25行和143列,而测试矩阵包含11行和143列

然后,对于每个用户,我将矩阵(所有专长)分为两个矩阵(训练矩阵和测试矩阵)。

训练矩阵包含(25行(示例)和143列),而测试矩阵包含(11行和143列)。

我不熟悉分类和这类东西

我想使用机器学习(神经网络)对这些特征进行分类

因此,第一步我需要为每个用户创建一个参考模板(称为培训阶段)

这可以通过使用用户的特征(数据)和其他用户(35个用户被视为冒名顶替者)训练分类器来实现

根据我所读的内容,训练神经网络需要两类,第一类包含真实用户(例如User1)的所有训练数据,并用1标记,而第二类包含冒名顶替者的训练数据,标记为0(这是二进制分类,1代表授权用户,0代表冒名顶替者)

**现在我的问题是:**

1-我不知道如何创建这些类

2-例如,如果我想为用户1训练神经网络,我有这些变量,输入和目标。我应该给这些变量分配什么

是否应输入=用户1的培训矩阵和用户2、用户3、…用户35的培训矩阵

目标=我应该为该矩阵分配什么

我真的很感激任何帮助

试试这个:

请注意:

  • 您说过,对于每个用户,您已经提取了136个特征。听起来每个用户只有一次重复(即用户尝试使用系统一次)。然而,我不知道你的数据来源,但我不知道它没有某种随机性。您提到步态分析,这听起来像是每次用户使用系统时,给定用户的记录数据都会不同。换句话说:用户使用你的系统,你捕获数据,你提取136个特征(数字);然后,用户再次使用系统,但提取的136个特征将略有不同。因此,您应该为每个用户提供几个示例来训练分类器。就“matlab矩阵”而言,每个示例的矩阵应该有一列,136行(每个特征)。因为每个用户都应该重复几次(例如10次),所以大矩阵应该是:136行x360列

  • 您应该为每个用户“创建”一个新的神经网络。给定一个用户(例如User4),您将创建一个数据集(一个新的矩阵),其中包含该用户的样本以及其他几个用户(User1、User3、User5…)的样本。你做了一个二进制分类(比如“user4”和“otherusers”)。培训后,建议使用其他用户的数据测试分类器,这些用户的数据在培训阶段不存在(例如User2和其他用户)。由于您正在进行二元分类,您的矩阵应如下所示:

  • 例如,您对每个用户有10次试用(示例)。您需要创建一个神经网络来检测用户User1。矩阵应如下所示: (表示法cU1_t1表示:包含用户1特征的列,试用版1) 输入矩阵=[cU1\u t1;cU1\u t2;…;cU1\u t10;cU2\u t1;…;cU36\u t10]

    目标矩阵应如下所示: 目标=一个矩阵,其前10列为[1,0],其他350列为[0,1]。这意味着前10列为A类型,其他列为B类型。在本例中,“A类型”表示“User1”,“B类型”表示“Not User1”

    然后,您应该对数据(训练数据、验证数据、测试数据)进行分段,以训练神经网络等。记住只为测试阶段保存一些用户,例如,train矩阵不应该有五个用户的任何列:user2、user6、user7、user10、user20(50列)

    我想你明白了

    问候

    ************更新:******************************

    本例假设用户选择/指示其名称,然后系统使用神经网络对用户进行身份验证(如密码)。我将给你一个随机数的小例子

    假设您已经记录了15个用户的数据(但将来您将有更多)。当他们用你的记录设备做某事时,你从他们那里记录“步态数据”。从记录的信号中提取一些特征,假设提取5个特征(5个数字)。因此,每次用户使用机器时,您都会得到5个数字。即使用户相同,每次5个数字也会不同,因为记录的信号具有一定的随机性。因此,为了训练神经网络,你必须
    % Create a Pattern Recognition Network
    hiddenLayerSize = 10; %You can play with this number
    net = patternnet(hiddenLayerSize);
    
    %Specify the indices of each matrix
    net.divideFcn = 'divideind';
    net.divideParam.trainInd = [1: 156];
    net.divideParam.valInd = [157:214];
    net.divideParam.testInd = [215:270];
    
    % % Train the Network
    [net,tr] = train(net, inputMatrix, targetMatrix);